PreviewMouseDoubleClic обрабатывается игнорируется

У меня есть окно, содержащее textBox.

И в окне, и в текстовом поле я добавляю 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 по-другому, что мешает мне использовать преимущества туннелирования?


person David    schedule 16.02.2011    source источник


Ответы (1)


Такое поведение предусмотрено дизайном, см.: http://msdn.microsoft.com/en-us/library/system.windows.controls.control.previewmousedoubleclick.aspx

person Community    schedule 16.02.2011
comment
да, у меня уже есть опция mouseButtonDown + clickCount в качестве решения для резервного копирования, но в моем случае это было бы действительно излишним, и я хотел знать, смогу ли я заставить все работать с помощью doubleClickEventHandler. Действительно странно, что вы не можете использовать туннелирование двойным щелчком. :-/ - person David; 16.02.2011
comment
На самом деле такое поведение предусмотрено дизайном, согласно MSDN: msdn.microsoft.com/en-us/library/ - person ; 16.02.2011
comment
напишите это как ответ, я отмечу вас как принятого. Это часть информации, которую мне не хватало (мне действительно нужно RTFM) - person David; 16.02.2011