Получите RoutedEvent Source как внук обработчика
Я обрабатываю пользовательский ввод в приложении WPF, работаю с RoutedEvents
такие как MouseDown
, MouseMove
и т. д. Я получил хорошее представление о туннелировании и всплывающих сообщениях из обзора маршрутизируемых событий MSDN, но столкнулся с проблемой всплывающих событий.
Как MouseDown
событие всплывает до обработчика, MouseButtonEventArgs.Source
дает мне дочерний элемент текущего элемента, из которого произошло событие. Есть ли способ получить ребенка этого элемента? Я думаю что-то на пути MouseButtonEventArgs.Source.Source
В этом случае я хотел бы поместить свою обработку ввода как можно выше в мое приложение, но все же получить информацию о начальном элементе, из которого произошло событие.
Пример ниже: здесь Grid
по имени Внука нажали, и я хотел бы обработать событие в Parent_MouseDown()
, Однако в этом случае вся информация, которую я получаю об источнике события, касается grid
по имени ребенка. Есть ли способ получить информацию о внуке от родителей?
<Grid x:Name="Parent" MouseDown="Parent_MouseDown">
<Grid x:Name="Child" MouseDown="Child_MouseDown">
<Grid x:Name="Grandchild" MouseDown="Grandchild_MouseDown">
</Grid>
</Grid>
</Grid>
Обратите внимание, что этот пример упрощен, так как в моем приложении эти элементы имеют разные классы и находятся в разных файлах. Заранее спасибо!
1 ответ
Пытаться MouseButtonEventArgs.OriginalSource
Он всегда указывает на первоисточник, из которого произошло событие.