如何从datagrid中删除无效行?

时间:2015-08-07 10:13:26

标签: c# wpf mvvm datagrid

申请结构说明:

语言是带有WPF和MVVM模式的C#。 View基本上是一个DataGrid,用于显示一些DataTable值(通过ViewModel)。允许用户从网格中添加,编辑和删除行。由于数据库从中检索值并稍后插回,因此会应用一些值限制(无空值,仅限数字等)。

可以直接对DataGrid进行数据修改,但也有一个单独的对话框用于编辑和添加新行。删除按钮的工作方式是ViewModel从DataTable中找到所选的DataGrid行,删除它们并将更改自动更新为DataGrid。

问题:

所以我遇到这个问题,用户试图向DataGrid插入无效数据,并且出现红色感叹号表示插入数据存在问题(我猜是验证错误?)。如果此时用户希望重新开始并选择无效行进行删除,则无法删除该行,因为它在模型中不存在但仅在DataGrid中存在。尝试直接从DataGrid删除无效的DataGridRow会引发一个异常,指出DataGrid绑定到Model并且应该在那里进行任何修改。

最后问题:

如何删除模型中不存在的无效DataGridRow?

1 个答案:

答案 0 :(得分:0)

如果实现MVVM模式,则除了将observablecollection中的更改链接到数据层以将其连接到DB之外,您不必执行任何操作。

您也可以将DataGrid定义为:

<DataGrid ItemsSource="{Binding Items}" SelectedItem="{Binding ActiveItem}" .../>

然后你可以在你的代码中对Items和ActiveItem的PropertyChanged事件作出反应,

ActiveItem.PropertyChanged += ... 

希望有所帮助