Получите 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 Он всегда указывает на первоисточник, из которого произошло событие.

Другие вопросы по тегам