У меня есть следующее дерево в моем приложении:
MainWindow (Window)
> LayoutRoot (Grid)
> (MyCustomControl)
> Item1 (Grid)
> Button (Button1)
MyCustomControl наследуется от ItemsControl и отображает его элементы на StackPanel.
MyCustomControl должен знать, когда мышь щелкает внутри себя, поэтому я переопределил метод OnPreviewMouseDown и ожидал, что получу уведомление о любом нажатии мыши внутри моего элемента управления.
Что происходит: если я нажимаю внутри Button1, событие PreviewMouseDown проходит вдоль дерева, и OnPreviewMouseDown выполняется, как и ожидалось.Но если я нажимаю на Item1, событие PreviewMouseDown прекращается сразу после MainWindow и не достигает даже LayoutRoot.
Вот сведения о перенаправленном событии, которые я получил, используя Snoop :
Нажатие кнопки 1:
(Window)
> (Border)
> (AdornerDecorator)
> (ContentPresenter)
> LayoutRoot (Grid)
> (MyCustomControl)
> (Border)
> (StackPanel)
> Item1 (Grid)
> Button1 (Button)
> Chrome (ButtonChrome)
Нажатие элемента 1:
(Window)
> (Border)
Событие никогда не регистрируется как обработанное, поэтому, насколько я знаю, оно должно идти в туннеле.
Что мне здесь не хватает?