gpt4 book ai didi

wpf - 在 WPF DataGrid 中,如何在数据网格行外部右键单击时强制失去焦点(从而提交)

转载 作者:行者123 更新时间:2023-12-04 19:04:01 31 4
gpt4 key购买 nike

我有一个带有可编辑单元格的 DataGrid。当行失去焦点时,将触发属性更改事件,我通过将更改提交给实体对象并最终提交给数据库来处理该事件。
用户可以在数据网格外部右键单击并从上下文菜单中进行选择。一些上下文菜单项依赖于数据网格中的数据(准确地说,它们依赖于提交的数据)。
但是,问题是在 DataGrid 外单击鼠标右键不会从 DataGrid 中移除焦点。这意味着不会提交对当前行的更改。这意味着用户会感到惊讶,因为菜单项命令处理的数据与屏幕上显示的数据不同。
我意识到这就是 DataGrid 的工作方式。但是,我也意识到用户永远无法理解这一点。

那么我该如何解决这个问题呢?右键单击时可以强制失去焦点吗?或者我可以使用 DataGrid 上的一些特殊属性吗?

(我发现这个:WPF DataGrid CellEditEnding - DataSet Not Updating Till Row Lost Focus 这使得 DataGrid 以每个单元为基础而不是基于每行提交,但它并没有解决我的问题,因为用户仍然可能丢失一些数据(尽管只有一个单元而不是每行)一整排))

最佳答案

我使用了 LPL 的建议,并创建了一个事件处理程序:

 private void ViewUserControl_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
// The purpose of this is to make sure that before the context menu on the outer datagrid is run, the row in the inner datagrid is committed (otherwise we might create orders with different quantities than what the user sees on the screen)
Keyboard.ClearFocus();
}

这解决了问题。

关于wpf - 在 WPF DataGrid 中,如何在数据网格行外部右键单击时强制失去焦点(从而提交),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10585040/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com