如果命令绑定位于列表框的项模板中,则它不起作用
我有以下用户控件
我有一个带有两个命令的视图模型,你可以在NewItemCommand
上面看到的第一个命令工作正常,第二个命令DeleteItemCommand
如何不起作用。
是因为它在项目模板中吗?
是的,这是因为ItemTemplate
的DataContext
是来自Persons
而不是ViewModel
的Item
要在每个项目上绑定DeleteItemCommand
,您需要绑定回持有该命令的ViewModel
例如,绑定到ListBox
的DataContext
编辑:
如果要删除单击该按钮的项目,可以将该按钮所属的项目作为CommandParameter
传递并在您的comman中处理,不确定您使用的是什么类型的命令,但如果您使用的是RelayCommand
这很简单或DelegateCommand
public MainWindow() { InitializeComponent(); DeleteItemCommand = new RelayCommand(person => DeletePerson(person as Person)); } private void DeletePerson(Person person) { Collection.Remove(person); }