WPF的路由事件

WPF中的事件为路由事件。

功能定义:路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事 件的对象)调用处理程序的事件。

实现定义:路由事件是一个 CLR 事件,可以由 RoutedEvent 类的实例提供支持并由 WPF事件系统来处理。

中断事件路由:

所有的路由事件都共享一个公共的事件数据基 类 RoutedEventArgs。 RoutedEventArgs 定义了一个采用布尔值的 Handled 属 性。 Handled 属性的目的在于,允许路由中的任何事件处理程序通过将 Handled 的值设 置为 true 来将路由事件标记为“已处理”。

在上面的例子中,将不再触发StackPanel_MouseUp事件。

路由事件,之所以叫“路由”,最主要在于其事件传递的特殊性;

在注册事件时,通过 RoutingStrategy枚举,可以使用三种方式传递事件

- RoutingStrategy.Bubble(冒泡路由事件)

沿UI可视树往上传递。例如,MouseDown事件就是一个冒泡路由事件。它首先被单击 的元素触发,接下来就是该元素的父元素触发,依此类推,直到WPF到达元素树的顶部为止

- RoutingStrategy.Tunnel(隧道路由事件)

沿UI可视树往下传递,例如PreviewKeyDown就是一个隧道路由事件。在一个窗口上按 下某个键,首先是窗口,然后是更具体的容器,直到到达按下键时具有焦点的元素

- RoutingStrategy.Direct(直接路由事件) 与普通的.NET事件类似,只传递一层。它源自一个元素,并且不传递给其他元素。例 如,MouseEnter事件(当鼠标移动到一个元素上面时触发)就是一个直接路由事件

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值