我有一个可以编辑单元格的 DataGrid。当行失去焦点时,属性更改事件会触发,我通过将更改提交到实体对象并最终提交到数据库来处理它。用户可以在数据网格外右键单击并从上下文菜单中选择。一些上下文菜单项依赖于数据网格中的数据(准确地说,它们依赖于提交的数据)。但是,问题在于 DataGrid 外部的右键单击不会从 DataGrid 中移除焦点。这意味着不会提交对当前行的更改。这意味着用户会感到惊讶,因为菜单项命令处理的数据与屏幕上显示的数据不同。我意识到这就是 DataGrid 的工作方式。但是,我也意识到用户永远无法理解这一点。
那么我该如何解决呢?右键单击时可以强制失去焦点吗?或者我可以使用 DataGrid 上的一些特殊属性吗?
(我发现了这一点:WPF DataGrid CellEditEnding - DataSet Not Updating Till Row Lost Focus这使得 DataGrid 以每个单元格而不是每行为基础提交,但它不能解决我的问题,因为用户仍然可能会丢失一些数据(虽然只有一个单元格而不是一整行))