我有一个包含文本框的窗口。
在窗口和文本框上,我添加了一个 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;
}
现在,当我双击文本框时,我希望先进入窗口的处理程序,打印调试行,然后处理事件,然后仅此而已。我认为文本框的处理程序不会触发,因为该事件已由窗口处理。
但这不是这样工作的:我让两个处理程序都被解雇了。
奇怪的是:它适用于 PreviewMouseDown 事件。如果我使用 PreviewMouseDownEvents 做完全相同的事情,我会得到我期望的行为,即:窗口处理 mouseDown 并且不会触发 textBox 的处理程序。
那么为什么这不适用于 doubleClick 事件?难道我做错了什么?它应该像这样工作吗?是否以不同的方式管理 doubleClick 事件,使我无法利用隧道的优势?