Routed Events предоставляют возможность различным элементам управления в дереве элементов реагировать на события.
Например, если у нас есть Window
, содержащий StackPanel
, содержащий Button
, и кто-то нажимает кнопку мыши на кнопке, события будут запускаться в следующем порядке:
PreviewMouseDown on Window
PreviewMouseDown on StackPanel
PreviewMouseDown on Button
MouseDown on Button
MouseDown on StackPanel
MouseDown on Window
Эти события «предварительного просмотра» используют поведение, называемое Tunneling
. Нормальные события Bubble
снова.
Если вы установите для свойства Handled
EventArgs
значение true
, туннелирование и образование пузырьков прекратятся. Туннелирование или Bubbling называется Routing Strategy .
Это позволяет обрабатывать различные ситуации, например:
- Запрещение любому дочернему элементу StackPanel получать события нажатия мыши. (Установите
Handled
на true
на StackPanel.PreviewMouseDown
).
- Обработка нажатий клавиш в окне, которое не обрабатывалось никаким другим элементом управления (
Window.KeyDown
)
Я бы посоветовал не смотреть на Прикрепленные события , пока это не станет абсолютно необходимым. Сценарий для прикрепленных событий очень ограничен. Прикрепленные события также являются перенаправленными событиями.