路由事件2

直接路由事件与普通的NET事件类似,只传递一层。它来源于一个元素并且不传递给其他元素。

就比如MouseEnter事件,当鼠标一动到某个元素上时直接触发就是一个直接路由事件。

案例:

冒泡事件设计器:

隧道事件设计器:

 

直接路由事件设计器:

以上是三个事件的样式设计,写完样式设计之后在冒泡事件中选择MouseUp右键点击转到定义,然后在TextBlock中选择MouseUp右键点击转到定义。

交互逻辑设计:

第二个隧道事件也是一样在设计样式中的隧道事件中选择PreviewMouseLeftButtonUp右键点击转到定义,然后在TextBlock中选择PreviewMouseLeftButtonUp右键点击转到定义。

交互逻辑设计:

第三个直接路由事件也是一样在直接路由事件中选择MouseEnter右键点击转到定义,然后在TextBlock中选择MouseEnter右键点击转到定义。

交互逻辑设计:

写完以上设计之后可运行查看效果。

效果图:

冒泡路由事件点击一次弹出是在YesTB_MouseUp中添加了e.Handled=true。

 

隧道路由事件点击一次弹出是在StackPanel_PreviewMouseLeftButtonUp中加了e.Handled=true。

 

直接路由事件鼠标移动到上下方有说明添加的e.Handled=true是无效的。

以上三个案例的总结:冒泡路由事件在YesTB上点击首先弹出TextBlock,在弹出StackPanel。隧道事件在YesTB上点击先弹出StackPanel在弹出TextBlock,直接路由事件当鼠标移动到YesTB上先弹出TextBlock移动到Stackpanel上时直接弹出TackPanel。

这点区别,那么我们加入e.Handled=true的时机也要不同。

冒泡路由事件,例子中:e.Handled=true加在YesTB_MouseUp中,加入后,点击 YesTB,将只弹出“TextBlock”。

隧道路由事件,例子中:e.Handled=true加在

StackPanel_PreviewMouseLeftButtonUp中,加入后,点击YesTB,将只弹出

Stackpanel”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值