响应双击时关闭WPF窗口双击到主窗口

问题描述 投票:4回答:2

我已经看到类似的问题报道但从未回答过。这对我来说是一个主要问题。

我有一个WPF应用程序,它使用ShowDialog()打开一个新窗口。在新窗口中,我有一个数据网格,但它可以是任何类型的对象。当我处理行的doubleclick事件时,我关闭窗口。此时窗口关闭,但主窗口中的控件直接位于我点击的位置,接收到了点击。

我尝试处理PreviewMouseButtonDown并查找clickcount = 2而不是doubleclick但具有相同的效果。我尝试设置e.Handled = true,也有同样的效果。我尝试在窗口上设置所有者,但没有任何变化。我尝试过模态以及常规窗口,没有任何变化。我只对单击进行了PreviewMouseButtonDown的响应,但是我确实需要双击。

wpf window double-click
2个回答
0
投票

好吧,我的项目中有一个类似的问题,并且它有点相关。我们从来没有真正解决它,但现在我给了它更多的想法。我的猜测是,因为你在处理输入的过程中关闭窗口,这个输入处理被取消,你的窗口被关闭,但输入请求仍然存在(因为它之前没有被处理过),因此你的父母窗口得到处理它。所以这当然只是在黑暗中拍摄,但可以解释我们的问题。因此,为了给出一个解决方案:您可以代替关闭窗口,使用较低优先级设置Dispatcher Job作为Input,然后关闭窗口。它应该对用户感觉相同,但应该消耗双击。

再一次不能保证它在我脑海中听起来合理。

祝好运。


0
投票

问题是在第二次鼠标DOWN事件中双击事件触发。如果您关闭窗口作为事件处理的一部分,您仍然将在对话框后面打开的任何窗口中接收鼠标UP事件。

我认为解决方案可能是在双击处理期间设置标志,并且在鼠标按下时,如果设置了标志,则关闭窗口。

© www.soinside.com 2019 - 2024. All rights reserved.