Туннельные события используются в WPF для всех событий OnPreview. Туннелирование имеет смысл, если вы хотите, чтобы фактический целевой элемент был последним, получившим событие.
Если у вас есть список с элементом, который содержит текстовое поле. Нажатие на текстовое поле будет потреблять щелчок, таким образом, не выбирая список. Если вы используете туннельное или предварительное событие щелчка мыши, вы можете сначала выбрать его, оставив его необработанным, а затем перейти к текстовому полю. Также обратите внимание, что в WPF каждое событие сначала запускает предварительный просмотр, а затем событие пузыря, если событие предварительного просмотра было обработано.
Msdn:
Туннелирование: изначально обработчики событий
в корне дерева элемента вызываются.
Затем перенаправленное событие проходит маршрут
через последовательные дочерние элементы
по маршруту, к узлу
элемент, который является перенаправленным событием
источник (элемент, который поднял
перенаправленное событие). Туннелирование маршрутизируемых событий
часто используются или обрабатываются как часть
композитинг для контроля, такой
что события из составных частей могут
быть умышленно подавленным или замененным
событиями, которые являются специфическими для
полный контроль Входные события
предоставляемые в WPF часто приходят реализованы
как туннельная / пузырящаяся пара.
Туннельные события также иногда
упоминается как Предварительный просмотр событий, потому что
соглашения об именах, которое используется
для пар.
AFAIK. Визуальное дерево используется для обхода, но поскольку MSDN не работает, я не могу найти подходящий источник.