如何删除数据网格wpf中的选定行
本文关键字:wpf 网格 数据网 何删除 删除 数据 | 更新日期: 2023-09-27 18:27:35
我正在使用WPF数据网格,我需要删除选定的行,我的代码是
private void dataGridView1_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Delete)
{
this.dataGridView1.Items.Remove(this.dataGridView1.SelectedItem);
}
}
但是当我使用这个代码显示错误
ItemsSource正在使用时操作无效。访问和修改具有ItemsControl.ItemsSource而不是的元素
如何删除所选行?
您永远不必从WPF网格中删除该行。你要做的是:
1) 定义一个具有ObservableCollection
属性的类型,该属性包含在网格上显示值的对象列表。
2) 将该属性绑定到您的网格控件。
3) 现在,如果您从绑定集合中添加/删除对象,相应的行将分别从控件的ui中添加/移除。
猜测您的DataGrid绑定到了ItemsSource(例如ObservableCollection)。在这种情况下,不允许从视图中操作ItemsSource,而是必须在ViewModel中删除它(绑定对象存储在其中)。
我认为您正在使用itemSource来填充dataGridview。从数据源中删除该项,然后刷新绑定。
或者让您的数据源类从INotifyPropertyChanged
继承并引发PropertyChanged
事件,并在列表框XAML上将UpdateSourceTrigger设置为PropertyChanged
事件,如下图所示:
ItemsSource="{Binding MyListItems, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}
正如绑定到DataSource的UI控件的错误描述中明确提到的,您应该操作数据源本身,而不是UI控件(在本例中是您的数据网格)。
UI控件只是在用户界面中显示数据的一种方式,用于显示编辑过的、新的或修改过的数据(例如少1行),您只需对分配给DataGrid的ItemSource属性的基础数据源执行操作即可。