如果命令绑定位于列表框的项模板中,则它不起作用

我有以下用户控件

           

我有一个带有两个命令的视图模型,你可以在NewItemCommand上面看到的第一个命令工作正常,第二个命令DeleteItemCommand如何不起作用。

是因为它在项目模板中吗?

是的,这是因为ItemTemplateDataContext是来自Persons而不是ViewModel的Item

要在每个项目上绑定DeleteItemCommand ,您需要绑定回持有该命令的ViewModel

例如,绑定到ListBoxDataContext

  

编辑:

如果要删除单击该按钮的项目,可以将该按钮所属的项目作为CommandParameter传递并在您的comman中处理,不确定您使用的是什么类型的命令,但如果您使用的是RelayCommand这很简单或DelegateCommand

   public MainWindow() { InitializeComponent(); DeleteItemCommand = new RelayCommand(person => DeletePerson(person as Person)); } private void DeletePerson(Person person) { Collection.Remove(person); }