如何基于类属性值拒绝删除行?C#WPF

如何基于类属性值拒绝删除行?C#WPF,c#,wpf,datagrid,C#,Wpf,Datagrid,如果存在具有特定值的属性,我想拒绝删除某行,例如,如果产品类型为Steel,我想拒绝用户删除该行 我将source设置为我的datagrid,如下所示: dataGridSourceList = new ObservableCollection<DatabaseItems>(TempController.Instance.SelectItemsByUserId(Globals.CurrentUser.Id)); dtgMainItems.ItemsSource = dataGridS

如果存在具有特定值的属性,我想拒绝删除某行,例如,如果产品类型为Steel,我想拒绝用户删除该行

我将source设置为我的datagrid,如下所示:

dataGridSourceList = new ObservableCollection<DatabaseItems>(TempController.Instance.SelectItemsByUserId(Globals.CurrentUser.Id));
dtgMainItems.ItemsSource = dataGridSourceList;
任何形式的帮助都会很棒
谢谢

您可以处理
命令管理器。PreviewCanExecute
附加事件:

private void OnPreviewCanExecute(object sender, CanExecuteRoutedEventArgs e)
{
    if (e.Command == DataGrid.DeleteCommand)
    {
        DatabaseItems selectedItem = dtgMainItems.SelectedItem as DatabaseItems;
        if (selectedItem != null && !selectedItem.IsDeleteEnabled)
            e.Handled = true;
    }
}
XAML:

<DataGrid x:Name="dtgMainItems" CommandManager.PreviewCanExecute="Grid_PreviewCanExecute" />


您的代码是正确的,它会查找
数据库项.IsDeleteEnables
属性,所以只需将其添加到那里即可。@Iceat您的意思是什么?你能提供一个关于这个例子的答案吗?是否有一个按钮是不可能的?谢谢你的帮助
<DataGrid x:Name="dtgMainItems" CommandManager.PreviewCanExecute="Grid_PreviewCanExecute" />