0

我有一个包含文本框的窗口。

在窗口和文本框上,我添加了一个 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 事件,使我无法利用隧道的优势?

4

1 回答 1

1

该行为是设计使然,请参阅:http: //msdn.microsoft.com/en-us/library/system.windows.controls.control.previewmousedoubleclick.aspx

于 2011-02-16T10:30:42.610 回答