«счетчик в моей коллекции ObservableCollection был изменен, но ListBox нет» - у вас есть несколько экземпляров ViewModel, счетчик был изменен, но не в коллекции, которая отображается
, вам нужно правильно настроить DataTemplate, чтобы избежать этого
сначала каждая кнопка получит объект User для DataContext (он будет предоставлен ListBox из ItemsSource).Вы не должны объявлять новые <Button.DataContext>
секунды, DelUsers_OASUCommand
объявляется в классе ViewModel, он доступен на уровне ListBox, из DataContext.Измените путь привязки соответственно.
<DataTemplate>
<WrapPanel>
<TextBlock Text="{Binding Name}" />
<TextBlock Text="{Binding Login}" />
<Button Command="{Binding DataContext.DelUsers_OASUCommand,
RelativeSource={RelativeSource AncestorType=ListBox}}"
CommandParameter="{Binding Path=Content,
RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}"
Content="DEL" />
</WrapPanel>
</DataTemplate>
дополнительно я бы изменил DelUsers_OASUMethod
, чтобы принять пользователя в качестве аргумента
private void DelUsers_OASUMethod(object arg)
{
Users_OASU.Remove(arg as User);
}
и передать CommandParameter следующим образом:
CommandParameter="{Binding Path=.}"
или то же самое, но короче:
CommandParameter="{Binding}"