Понимание событий маршрутизации. Зачем мне нужны как пузырьковые, так и туннельные события? - PullRequest
4 голосов
/ 10 августа 2010

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

Что я не понял, так это то, что когда мы используем туннельное событие, почему после того, как оно обрабатывается или достигает элемента источника, все еще запускается событие пузыря?

Заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 10 августа 2010

В статье говорится, что если вы поместите изображение на кнопку и нажмете это изображение, будет запущено событие туннеля для этого изображения. Но весьма вероятно, что вы также захотите обработать этот щелчок, как если бы сама кнопка была нажата, поэтому также запускается событие пузыря, которое всплывает до события щелчка на самой кнопке (поскольку кнопка владеет изображением), поэтому что вы можете обрабатывать щелчок изображения как нажатие кнопки, используя обычный обработчик событий для кнопки.

2 голосов
/ 14 февраля 2011

Я также хотел бы добавить, что события для Tunnel и Bubble различны. Для туннеля мы используем PreviewXXX (например, PreviewMouseDown), а для пузырькового события мы используем событие XXX (например: MouseDown).

По порядку событие Tunnel запускается первым, начиная с корня приложения и заканчивая в источнике. И событие Bubble вызвано.

Имеет смысл иметь оба этих события.

...