WPF 路由事件

最近想封装一个关于手势的控件,但是由其他的控件覆盖之后发现不能触发,据说是有一些事件在定义的时候就处理过e.Handle了。

定义的时候就处理了,就是为了控件能够正常的工作,别如Button.MouseDown什么的。

当你写Click事件的时候是能够触发的,但是Button.MouseDown是不会触发的,估计是封装Click事件的时候就e.Handle处理了。

使用Preview事件,即Touch系列的事件都换成PreviewTouch事件。(这里如果Preview被处理了呢?不过写的是父控件,Preview一定会被触发)

PreviewTouch事件与普通Touch事件又有什么区别呢?

参考Pro WPF中,PreviewTouch是隧道事件,普通Touch是冒泡事件。

<Grid>

  <StackPanel>

    <Button/>

  </StackPanel>

</Grid>

隧道:父(Grid)->子(StackPanel)->孙(Button)  视觉树的根->叶

冒泡:孙(Button)->子(StackPanel)->父(Grid)  视觉树的叶->根

这里面是说的事件触发顺序,先是隧道事件后是冒泡事件,这里是使用e.Handle测试过了。

这里又想到了一些问题:

Touch与Manipulation事件之间有什么区别?

那么我们回归本质的话,那就是三个问题(what,when,how):什么是Manipulation?什么时候使用Manipulation?怎么使用Manipulation?

Manipulation是微软基于Touch系列事件的再一次封装。

就是你用用Manipulation支持的一系列操作的时候用。

怎么用。。。。。。。。Gnie大神有说~

 

 

 

转载于:https://www.cnblogs.com/XzcBlog/p/3454118.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值