Routed Event & Routed Commands

本文介绍了WPF中的路由事件机制,详细讲解了路由事件如何在可视树上层级传递,以及不同类型的路由策略,如冒泡和隧道。通过示例展示了事件的触发过程,并提到了附加事件的概念。此外,还提及了路由命令在处理键盘和鼠标输入中的应用。
摘要由CSDN通过智能技术生成

WPF 的采取了路由事件机制,这样事件可以在可视树上层级传递。要知道 XAML 中控件都是由很多其他元素组合而成,比如我们单击了 Button 内部的 TextBlock 元素,Button 依然可以可以接收到该事件并触发 Button.Click。通常情况下,我们只是关心逻辑树上的事件过程。

1)创建

public abstract class ButtonBase : ContentControl, ICommandSource
{
  public static readonly RoutedEvent ClickEvent;
  static ButtonBase()
  {
    ClickEvent = EventManager.RegisterRoutedEvent("Click", RoutingStrategy.Bubble, 
      typeof(RoutedEventHandler), typeof(ButtonBase));
    ......
  }
  public event RoutedEventHandler Click
  {
    add { base.AddHandler(ClickEvent, value); }
    remove { base.RemoveHandler(ClickEvent, value); }
  }
}

2)类型

注册路由事件时,我们可以选择不同的路由策略。

  管道传递(Tunneling): 事件首先在根元素上触发,然后向下层级传递,直到那个最初触发事件的子元素。

  冒泡(Bubbling): 事件从最初触发事件的子元素向根元素层级往上传递。

  直接(Direct): 事件仅在最初触发事件的子元素上触发。

 

 

 

 

 

<

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值