简介:
路由事件有三种方式。
Direct Event | 直接路由事件。自身元素,不传递。 |
Bubbling Event | 冒泡路由事件。从子元素到父元素传递。 |
Tunneling Event | 隧道路由事件。从父元素到子元素传递。 |
注意
1.设置Handled = true的时候,不管是冒泡还是隧道事件,它还是会继续传播的,只是对应的事件不会再处理了。可以通过AddHandler方法进行注册,再次触发事件。
2.因为隧道路由事件都是以单词Preview开头。一般都成对地定义冒泡路由事件和隧道路由事件。例如一个冒泡的MouseDown事件,则对应的PreviewMouseDown就是一个隧道路由事件。另外,隧道路由事件总是在冒泡路由事件之前被触发。如果将隧道路由事件标记为已处理的,那么冒泡路由事件就不会发生。这是因为这两个事件共享同一个RoutedEventArgs类的实例。