Предотвращение туннелирования событий WPF - PullRequest
1 голос
/ 02 декабря 2009

Мне нужно нарисовать много WPF-путей. Я поставил их детям холста. Проблема в том, что события туннелируются к объектам пути. Это замедляет производительность. Я знаю, что переопределение метода предварительного просмотра решает проблему, но нужно ли мне переопределять все методы предварительного просмотра ..

Ответы [ 3 ]

1 голос
/ 02 декабря 2009

Я думаю, что вы можете перехватить событие в Canvas и установить для e.Handled значение true.

0 голосов
/ 14 октября 2017

Не для того, чтобы воскрешать старые вопросы, но, если были, например, кнопки вместо путей, установка IsHitTestVisible в true не была бы в порядке, так как это эффективно предотвращает Click и другие события.

В моем случае у меня был TabItem с событием PreviewMouseMove и кнопка на том же самом TabItem с событием Click, которое не сработало. Дело в том, что если вы получили событие tunneling (например, PreviewMouseMove) в родительском элементе управления, оно «переопределит» аналогичные события в своих дочерних элементах управления. Возможное решение - то, которое сработало для меня - это получение другого всплывающего события, такого как MouseMove .

Короче говоря, пузырьковые события распространяются на родительские элементы, а туннельные события распространяются на дочерние элементы; существуют также прямые события, которые не распространяются вообще.

Подробнее по теме здесь .

0 голосов
/ 07 декабря 2009

Я нашел решение. Я установил для свойства пути IsHitTestVisible-false значение false. Теперь они не снижают производительность.

...