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