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大神有说~

  • 相关阅读:
    Nginx软件优化
    分布式文件系统---GlusterFS
    内建DNS服务器--BIND
    ESXI 6.5 从载到安装
    在Linux下写一个简单的驱动程序
    TQ2440开发板网络配置方式
    虚拟机Linux下找不到/dev/cdrom
    求最大公约数
    strcmp的源码实现
    转:嵌入式软件工程师经典笔试题
  • 原文地址:https://www.cnblogs.com/XzcBlog/p/3454118.html
Copyright © 2011-2022 走看看