【发布时间】:2011-06-28 06:16:51
【问题描述】:
我有一个包含文本框的窗口。
在窗口和文本框上,我添加了一个 PreviewMouseDoubleClicHandler。
窗口中的处理程序:
private void PreviewMouseDoubleClickHandler(object sender, MouseButtonEventArgs e)
{
Debug.WriteLine("handler in the window");
e.Handled = true;
}
文本框中的处理程序:
private void PreviewMouseDoubleClickHandler(object sender, MouseButtonEventArgs e)
{
Debug.WriteLine("handler in the textBox");
e.Handled = true;
}
现在,当我双击文本框时,我希望首先进入窗口的处理程序,打印调试行,然后处理事件,然后仅此而已。我认为 textBox 的处理程序不会触发,因为该事件已由窗口处理。
但这不是这样工作的:我让两个处理程序都被解雇了。
奇怪的是:它与 PreviewMouseDown 事件配合得很好。如果我用 PreviewMouseDownEvents 做同样的事情,我会得到我期望的行为,即:窗口处理 mouseDown 并且 textBox 的处理程序不会被触发。
那么为什么这不适用于 doubleClick 事件?难道我做错了什么?它应该像这样工作吗?是否以不同的方式管理 doubleClick 事件,使我无法利用隧道的优势?
【问题讨论】:
标签: wpf event-handling double-click tunneling