我如何在datagrid wpf中删除所选行?

时间:2014-10-22 11:55:31

标签: c# wpf datagrid

我正在使用WPF datagrid我需要删除选中的Row,我的代码是

private void dataGridView1_PreviewKeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Delete)
    {
         this.dataGridView1.Items.Remove(this.dataGridView1.SelectedItem);
    }
} 

但是当我使用此代码时显示错误

  

使用ItemsSource时,操作无效。访问和修改   而使用ItemsControl.ItemsSource的元素

如何删除所选行?

4 个答案:

答案 0 :(得分:6)

您永远不必从WPF网格中删除该行。你要做的是:

1)定义一个ObservableCollection属性的类型,该属性包含在网格上显示值的对象列表。

2)将该属性绑定到网格控件。

3)现在如果你从绑定集合中添加/删除对象,相应的行将分别从控件的ui中添加/删除。

答案 1 :(得分:2)

我认为您正在使用itemSource来填充dataGridview。 从数据源中删除该项,然后刷新绑定。

或者让您的数据源类继承自INotifyPropertyChanged并引发PropertyChanged事件,并在列表框XAML上将UpdateSourceTrigger设置为PropertyChanged事件,如下所示:

ItemsSource="{Binding MyListItems, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}

答案 2 :(得分:2)

猜测您的DataGrid绑定到ItemsSource(例如ObservableCollection)。在这种情况下,不允许从View中操作ItemsSource,而您必须在ViewModel中删除它(这是存储绑定对象的位置)。

答案 3 :(得分:1)

正如在绑定到DataSource的UI控件的错误描述中明确提到的那样,您应该操纵数据源本身而不是UI控件(在本例中是数据网格)。

UI控件只是一种在用户界面中显示数据的方式,用于显示已编辑的或新的或修改的数据(例如,少于1行),您只需对已分配给DataGrid的基础数据源执行操作&# 39; s ItemSource属性。