我在分组框中有一个文本框,都有双击事件。当我双击文本框时,会触发两个事件。
如何阻止文本框中的点击进入群组框?我试过把“e.Handled = true;”在textbox_DoubleClick事件的末尾,但没有区别。
答案 0 :(得分:8)
因为WPF使用事件传播的“隧道/冒泡”模型,所以大多数事件从可视树的底部开始冒泡。如果您想在 down 的路上捕获事件,则会有Preview
个版本的事件向下挖掘。例如:
在那里设置e.Handled = true
。
答案 1 :(得分:3)
在您的GroupBox的DoubleClick事件中,您可以检查e.OriginalSource
的值,如果该值不是GroupBox
,则忽略该事件
private void TabItem_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (e.OriginalSource is GroupBox)
{
// Your code here
}
}
我认为ClickEvents实际上是Direct Events,而不是Tunneled / Bubbled事件,因此将e.Handled
设置为一个不会取消另一个。
每MSDN Site for MouseDoubleClick
虽然这个路线事件似乎遵循一条冒泡的路线 元素树,它实际上是一个引发的直接路由事件 每个UIElement沿着元素树。
答案 2 :(得分:1)
你应该在PreviewDoubleClick中处理e.Handled,因为隧道事件发生在冒泡之前。
为什么你需要在文本框和组合框中处理该事件?因为两个单独的事件被解雇因为它被解雇了。