Wpf 数据网格地狱

Wpf 数据网格地狱,wpf,mvvm,datagrid,Wpf,Mvvm,Datagrid,我试图通过引入添加/编辑/删除按钮来替换在datagrid中插入/删除/编辑项的默认方法。应该足够简单,对吗? 我试图通过使用MVVM来实现这一点,并实现了以下命令,每个命令分别绑定到按钮: 添加-向基础ObservableCollection添加新对象 Delete-同时从集合中删除数据绑定的选定项。 编辑-这个问题很棘手,根据另一个问题的建议,我在datagrid上使用了一个附加的依赖属性来调用它的BeginEdit。 来自WinForms,我发现这是一种有趣的做事方式,但嘿,我刚刚开始熟悉

我试图通过引入添加/编辑/删除按钮来替换在datagrid中插入/删除/编辑项的默认方法。应该足够简单,对吗? 我试图通过使用MVVM来实现这一点,并实现了以下命令,每个命令分别绑定到按钮:

添加-向基础ObservableCollection添加新对象 Delete-同时从集合中删除数据绑定的选定项。 编辑-这个问题很棘手,根据另一个问题的建议,我在datagrid上使用了一个附加的依赖属性来调用它的BeginEdit。 来自WinForms,我发现这是一种有趣的做事方式,但嘿,我刚刚开始熟悉这个程序。哦,我忘了提到我也在用IDataErrorInfo进行验证,我在列绑定上有validateOnDataErrors=True,NotifyOnValidationError=True。验证只是检查非空值

我的问题是:

用户单击“添加”,将添加新行,但该行无效,因为该值为空。 用户选择新添加的行,然后单击“编辑”。 用户决定按一下ESC键取消该操作。细胞仍然无效。 用户现在选择一个不同的有效行,点击编辑。当前选定行中的单元格未进入编辑模式,BeginEdit返回false。 顽固的用户决定删除仍然无效的新添加行,所有内容现在看起来都有效。用户再次尝试编辑其他行,但BeginEdit仍然返回false。 看起来,即使删除了该行,DataGrid仍处于无效模式。我试着给CancelEdit打电话,但没办法

在过去的“winform时代”,任何帮助完成本应是非常简单的任务的人都将不胜感激
哦,如果我做错了事情,甚至使用了错误的控制,请随意责骂我:

你做的一切都是错的。否则你就不会有任何问题,因为WPF是完美的,没有任何缺陷。没有人能告诉你出了什么问题,除非你发布一些展示了确切问题的示例代码。试着构建一个防白痴的代码,然后有人构建一个更好的白痴最终用户。。。我们生活在一个奇妙的世界里……我们找到了一个解决方案,尽管我不得不这么做似乎很奇怪,因为网格绑定到一个可观察的集合-解决方案是在从集合中删除一个项后调用Datagrid.Items.Refresh。