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