WPF路由事件学习笔记

路由事件

路由事件是具有更强传播能力的事件---他们可在元素树中向上冒泡和向下隧道传播,并且沿着传播路劲被事件处理程序处理。

路由事件和依赖项属性模型类似。

WPFButton类提供了大家属性的Click事件,改时间继承自抽象的ButtonBase基类

Public abstract class ButtonBase:ContentControl......

{

Public static readonly RoutedEcent ClickEvent;

Static ButtonBase()

{

ButotnBase.ClickEvent=EventManager.RegisterRoutedEvent(

“Click”,RoutingStrategy.Bubble,Typeof(RoutedEventHandler),eypeof(ButtonBase));

}

 

Public event RoutedEventHandler Click

{

Add

{

base.AddHandler(ButtonBase.ClickEvent,value);

}

Remove

{

base.RemoveHandler(ButtonBase.ClickEvent,value);

}

}

}

注册事件时需要指定事件的名称,路由类型,定义事件处理程序语法的委托以及事件的拥有着

 

共享路由事件:与依赖项属性一样,可在类之间共享路由事件的定义。例如,UIElement使用MouseUp事件,MouseUp时间是在Windows.Inout.Mouse类定义的,UIElement类只通过RoutedEvented.AddOwer方法重用MouseUp事件

UIElement.MouseUpEvent=Mouse.MouseUpEvente.AddOwer(typeof(UIElement));

冒泡路由事件:从元素开始向该元素的父元素传递,直至顶层元素。

隧道路由事件:从顶层容器开始到具体元素,

WPF事件有下面几大类

v 生命周期事件:元素被初始化,加载或卸载时发生。

v 鼠标事件:鼠标动作的结果。

v 键盘事件:键盘动作的结果。

v 手写笔事件:类似钢笔,平板电脑上手写笔代替鼠标。

v 多点触控事件:触摸屏的一些动作。

生命周期事件:

Initialized  当元素被实例化,并以根据XAML标记设置了元素的属性后发生,这是元素已经初始化,但窗口的其他部分可能尚未初始化。此外,尚未应用样式和数据绑定。

Loaded 当整个窗口已经初始化并应用了样式和数据绑定,该事件发生,这是元素被呈现之前最后一站。

Unloaded 当元素被释放时发生,原因是包含元素的窗口被关闭或特定的元素被从窗口中删除。

当创建窗口时,会自下而上的初始化每一个分支元素,这意味着,位于深层的嵌套元素在他的容器之前被实例化。当引发初始化事件时,可确保元素树中当前元素一下的元素已经全部完成实例化,但是包含当前元素的元素可能还没有初始化,每个元素初始化后,还需要在他们的容器中进行布局,应用样式。如果需要的话,还会绑定到数据源。一旦完成初始化,就会进入Loaded事件,Loaded事件的发生过程和Initialized事件的发生过程相反。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值