奇怪的问题 - 弹出窗口中的鼠标点击被下面的控件捕获

时间:2013-02-22 15:35:56

标签: wpf

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

Popup出现在DataGrid上,我也在我的页面上,我发现鼠标点击组合框也被我上传的MouseUp事件所取代数据网格。知道发生了什么事吗?

2 个答案:

答案 0 :(得分:2)

MouseUp事件的路由策略类型为Bubbling。使用此类策略的事件将链传递到父控件。由于PopupDataGrid的孩子,因此该事件将“冒泡”到DataGrid。如果您希望事件不会冒泡,可以尝试使用PreviewMouseUp,它具有Tunneling路由策略,并将链接“隧道”到子控件。这是Routing Strategies {{1}}的合适overview

答案 1 :(得分:0)

我遇到了同样的问题。奇怪的是,当代码在调试器中运行时不会发生 - 它只发生在发布版本中。它似乎是WPF中的一个错误。尝试捕获单击并将事件设置为处理不起作用。

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