zoukankan      html  css  js  c++  java
  • 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大神有说~

  • 相关阅读:
    关于抽象类
    封装.继承.多态
    构造方法
    String
    无参方法与有参方法
    类和对象
    使用分层实现业务处理(二)
    使用分层实现业务处理(一)
    序列化Serializable接口
    用JSP从数据库中读取图片并显示在网页上
  • 原文地址:https://www.cnblogs.com/XzcBlog/p/3454118.html
Copyright © 2011-2022 走看看