Передача событий мыши в перекрывающиеся элементы управления - PullRequest
3 голосов
/ 04 апреля 2011

Мой пользовательский элемент управления WPF состоит из нескольких подкомпонентов, размещенных таким образом, что они перекрывают друг друга (иногда полностью), однако они находятся на одном уровне в визуальном дереве (родительский элемент каждого подкомпонента является основной сеткой).Я хочу передать события мыши от самого верхнего до самого нижнего, однако поведение WPF по умолчанию пропускает их по путям визуального дерева, а не по их Z-порядку.К сожалению, невозможно внедрить одно в другое (чтобы воспользоваться механизмами по умолчанию).Как я могу решить эту проблему?

С уважением - Spook.

Ответы [ 2 ]

2 голосов
/ 04 апреля 2011

Простым решением было бы обработать все события в родительском элементе Grid, не подключая никаких обработчиков в дочерних элементах управления и вручную «направляя» события, основанные на дочернем z-порядке, к дочерним элементам сетки.

Это потребует много ручной работы, но я не могу найти другого способа реализации пользовательских стратегий маршрутизации в WPF.

1 голос
/ 04 апреля 2011

Если в вашем конкретном случае требуется, чтобы все подкомпоненты были на одном уровне в визуальном дереве, лучше всего установить флаг IsHitTestVisible в значение false для всех подкомпонентов, поймайте мышь события на самом верхнем уровне, затем вручную выберите подкомпонент, соответствующий событию мыши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...