如何将删除操作(在WPF Datagrid中)绑定到视图模型中的命令或属性

时间:2012-02-23 12:06:03

标签: wpf mvvm

我有一个datagrid和一个视图模型,它有一个Obtableable的“Person”类集合,它作为datagrid的ItemSource。

Datagrid有两个文本列“FirstName”和“LastName”

datagrid将“CanUserAddRows”和“CanUserDeleteRows”设置为true。因此,用户可以使用删除按钮添加新行并删除它们。

当用户尝试删除行时,我想验证他是否可以删除该行。如果他可以删除它,它将被删除,否则将显示错误,并且不能删除该行。像我们在继电器命令中那样的东西

New RelayCommand(parm => this.DeletePerson(parm),this.CanDeletePerson(parm)

这可能吗?如果是这样的话?

  • 吉里贾

1 个答案:

答案 0 :(得分:30)

尝试将DataGrid设置为...

  

CanUserDeleteRows =“False”SelectedItem =“{Binding SelectedPerson,Mode = TwoWay}”

并添加......

<DataGrid.InputBindings>
    <KeyBinding Key="Delete" Command="{Binding DeletePersonCommand}" />
</DataGrid.InputBindings>

将SelectedPerson添加到您的VM并根据DeletePersonCommand(ICommand)Execute或CanExecute中的SelectedPerson执行删除验证,如果验证通过,则从ObservableCollection中删除该项。