如何删除datagrid wpf中的选定行?
我使用WPF数据网格我需要删除选定的行,我的代码是如何删除datagrid 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中添加/删除。
我执行了1步和2步,但我不知道如何从控件的用户界面中删除 – 2014-10-22 13:14:30
@MahmoudKassem:您需要从集合本身中删除,如果它正确绑定以进行控制,则该行将从控件本身消失。 – Tigran 2014-10-22 13:27:51
正如绑定到DataSource的UI控件的错误描述中明确提到的,您应该操纵数据源本身而不是UI控件(在本例中为数据网格)。
UI控件只是一种在用户界面中呈现数据的方式,以显示已编辑或新的或已修改的数据(例如,少于一行),您只需对已分配给DataGrid的基础数据源ItemSource属性。
我想你正在使用一个itemSource来填充dataGridview。 从数据源中删除项目,然后刷新绑定。
或者让你的数据源类从INotifyPropertyChanged
继承和养PropertyChanged
事件,并在列表框XAML设置UpdateSourceTrigger为PropertyChanged
事件,如下面:
ItemsSource="{Binding MyListItems, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}
是猜测你的DataGrid绑定到的ItemsSource (例如一个ObservableCollection)。在这种情况下,不允许从视图中操作ItemsSource,而您必须在ViewModel中移除它(这是存储绑定对象的地方)。
异常很清楚。您需要从'ItemsSource'(底层集合)中删除该项目,而不是试图从'dataGridView1.Items'集合中删除。 – 2014-10-22 12:00:13