我有一个datagrid和一个视图模型,它有一个Obtableable的“Person”类集合,它作为datagrid的ItemSource。
Datagrid有两个文本列“FirstName”和“LastName”
datagrid将“CanUserAddRows”和“CanUserDeleteRows”设置为true。因此,用户可以使用删除按钮添加新行并删除它们。
当用户尝试删除行时,我想验证他是否可以删除该行。如果他可以删除它,它将被删除,否则将显示错误,并且不能删除该行。像我们在继电器命令中那样的东西
New RelayCommand(parm => this.DeletePerson(parm),this.CanDeletePerson(parm)
这可能吗?如果是这样的话?
答案 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中删除该项。