6

我正在显示 aPopup以响应按钮单击 ( popup.IsOpen = true;)。弹出窗口包含一个组合框,当我单击组合框中的一个项目时,SelectionChanged 事件所做的一件事就是隐藏弹出窗口。

弹出窗口出现DataGrid在我的页面上,我发现鼠标单击组合框也被我在 DataGrid 上的 MouseUp 事件拾取。知道发生了什么吗?

4

2 回答 2

3

MouseUpEvent 有一个类型为 的路由策略Bubbling。使用这种策略的事件会向上传递到父控件。由于Popup是 的孩子DataGrid,因此事件将“冒泡”到DataGrid。如果您不希望事件冒泡,您可以尝试使用PreviewMouseUp,它具有Tunneling路由策略,并将“隧道”沿着链向下传递到子控件。这是一个体面overviewRouting Strategies

于 2013-02-22T19:08:05.850 回答
0

我遇到了同样的问题。奇怪的是,在调试器中运行代码时不会发生这种情况——它只会在发布版本中发生。它确实似乎是 WPF 中的一个错误。试图捕捉点击并将事件设置为已处理是行不通的。

我的解决方法是,当弹出窗口打开时,告诉下面的控件忽略单击。

于 2018-04-21T09:52:02.920 回答