我正在使用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的元素
如何删除所选行?
答案 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属性。