WPF技术总结3

路由事件 RoutedEvent
定义
1.它可以在元索树上向上冒泡和向下隧道传播,并且沿若传播路径被事件处理程序处理base.RaiseEvent(e);

2.通过RaiseEvent方法触发路由事件

3.RoutingStrategy枚举值来标识希望应用于事件的事件行为(Direct, Bubble, Tunnel)

直接路由事件
不传递:它源自一个元素,并且不传递给其他元素。例如,MouseEnter事件(当鼠标移动到-个元素上面时触发)就是一一个直接路由事件。
冒泡事件
向上传递: 例如,MouseDown事件就是一 一个冒泡路由事件。它首先被单击的元素触发,接下来就是该元素的父元素触发, 依此类推,直到PF到达元素树的顶部为止。
隧道事件
向下传递:例如PrevievKeyDown就是 一个隧道路由事件。在一个窗口上按下某个键,首先是窗口,然后是更具体的容器,直到到达按下键时具有焦点的元素。

附加事件
1.
假设有这样一个场景,StackPanel面板中包含了一堆按钮,并且希望在一个事件处理程序中处理所有这些按钮的单击事件。首先想到的办法就是将每个按钮的Click事件关联到同一个事件处理程序。但是Click事件支持事件冒泡,从而有一种更好的解决办法。可以在更高层次元素来关联Click事件来处理所有按钮的单击事件
2.

其他
1
如果想在某层之后阻止事件发生/如果想阻止事件传递(前面理解对,效果一样)
RoutedEventArgs. Handled=true, 此时传递是继续发生的,但是事件不去处理了
2
隧道路由事件总是在冒泡路由事件之前被触发。
3
如果将隧道路由事件标记为已处理的,那么旨泡路由事件就不会发生。这是因为这两个事件共享同一个 RoutedEventArgs类的实例
4
一个窗口的事件触发顺序

1深层的嵌套元素先被初始化
2每个元素都完成初始化之后,还需要在它们的容器中进行布局、应用样式,如果需要
的话还会进行数据绑定。
3最外层元素(窗口)触发Load事件,然后嵌套深层元素触发Load事件

内层元素初始化–》
外层元素初始化–》
外层元素Load----》
内层元素Load----》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值