WPF笔记2——路由事件
WPF的路由事件(Routed Events),允许事件在UI元素层次结构中传播。
在WPF中,UI元素被组织成一棵树,成为可视化树(Visual Tree)。
当一个事件(如鼠标点击)在某个控件上触发时,这个事件可以沿着Visual Tree向上(向树的根部)或向下(向树的枝叶)传播;如果不广播就是直接事件。
路由事件有两个主要的传播阶段:
1、冒泡阶段(Bubbing Phase):事件从触发它的控件开始,向上传播到树的根节点。
在这个过程中,每个父元素都有几乎处理这个事件;如果父元素没有处理这个事件,他会继续向上传播;
冒泡事件的明天通常没有特定的前缀,例如:MouseClick 、 KeyDown等;
2、隧道阶段(Tunneling Phase):事件从树的根节点开始,向下传播到触发它的控件。
在这个过程中,每个子元素都有机会处理这个事件;如果没有子元素处理这个事件,它会继续向下传播。
隧道事件的命名以Preview为前缀,例如:PreviewMouseClick、 PreviewKeyDown等
补充:
1、有Stylus的事件,通常与触摸或手写输入相关,如:StylusDown、StylusUp、PreviewStylusMoveEvent等
2、事件的回调函数,即以On开头的方法成员,都被声明为protected virtual void类型,如:
路由事件的关键特性是它们可以被多个元素处理,这为事件处理提供了更大的灵活性。
例如,一个按钮点击事件可以在按钮本身、它的父容器、甚至更高层级的父容器中被处理。这种机制使得开发者可以编写更通用的事件处理代码,而不必为每个控件单独编写事件处理逻辑。