1.什么是路由事件

已下为MSDN中的定义

  功能定义:路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件。

  实现定义:路由事件是一个 CLR 事件,可以由 RoutedEvent 类的实例提供支持并由 Windows Presentation Foundation (WPF) 事件系统来处理。典型的 WPF 应用程序中包含许多元素。 无论这些元素是在代码中创建的还是在 XAML 中声明的,它们构成了一个彼此关联的元素树。

2.冒泡事件和隧道事件

根据事件的定义,事件路由可以按两种方向之一传播,分别为冒泡事件和隧道事件。

  通常在元素树中从源元素向上“冒泡”,直到它到达元素树的根(通常是页面或窗口)。这样您就可以针对源元素的上方层级对象处理事件。例如,可向嵌入的 Grid 元素附加一个 Button.Click 处理程序,而不是直接将其附加到按钮本身。气泡事件有指示其操作的名称(例如,MouseDown)。

   隧道事件采用另一种方式,从根元素开始,向下遍历元素树,直到被处理或到达事件的源元素。这样上游元素就可以在事件到达源元素之前先行截取并进行处理。根据命名惯例,隧道事件通常都以 Preview开头(例如 PreviewMouseDown)。隧道路由事件总在冒泡路由事件之前被触发。

3.WPF事件

  1)生命周期事件:在元素被初始化、加载或卸载时发生这些事件。

    Initialized:某元素被实例化,这时元素已被初始化,但其他元素可能还未初始化。此外尚未应用样式和数据绑定时,属性为true;

    Loaded:整个窗口已经初始化,并应用了样式和数据绑定,该事件发生,这是元素被呈现之前的最后一站。Isloaded属性为true;

    Unloaded:元素被释放时,该事件发生,原因是包含元素的窗口被关闭或元素从窗口中被删除。

  2)鼠标事件:鼠标操作后触发的事件按,如up,down。

  3)键盘事件:键盘动作的结果。

    PreviewKeyDown:隧道,按下一个键时发生;KeyDown:冒泡,按下一个键时发生;

    PreviewTextInput:隧道,当按键完成并且元素正在接收文本输入时发生;TextInput:冒泡;

    PreviewKeyUp:隧道,抬起一个键时发生;

    键盘事件中,一些事件还会挂起另外的一些事件,从而执行更特殊的键盘处理。如TextBox挂起了TextInput事件。

KeyboardDevice属性提供的方法
名称 说明
IsKeyDown() 事件发生通知是否按下该键
IsKeyUp() 事件发生通知是否抬起该键
IsKeyToggled() 事件发生时,检验是否处于打开状态,如Caps Lock
   

  4)手写笔事件:使用手写笔的结果,在平板上用手写笔代替鼠标。

  5)多点触控事件:由一根或多跟手指在触屏设备上操作的结果,仅在win7中支持这些事件。

      以下多点触控摘自MSDN

       

最新文章

  1. [leetcode] 题型整理之排序
  2. Notepad++的插件
  3. hdu 5018 Revenge of Fibonacci
  4. 3D拓扑自动布局之Web Workers篇
  5. 深入css中的margin
  6. abap append 用法
  7. BZOJ 1589 采集糖果
  8. Selenium 中使用方法小结
  9. PHP.8-HTML+CSS(二)-HTML详解
  10. http://jingyan.baidu.com/article/a378c960630e61b329283045.html
  11. JAVA TCP/IP Socket通信机制以及应用
  12. 禁止form表单回车键进行提交
  13. Linux操作:
  14. Entity Framework Code First 多数据库 控制台迁移代码
  15. Python网络资源 + Python Manual
  16. sql中select语句的逻辑执行顺序
  17. BZOJ 1052 HAOI2007 覆盖问题 二分法答案+DFS
  18. Ubuntu 14.04 绑定固定 IP
  19. oracle的exp和imp命令的使用【转载】
  20. WebService的基本介绍

热门文章

  1. metaspolit 基础
  2. cygwin 的不同文件类型显示不同的颜色
  3. hdu2072 字典树
  4. Java sun的JDK
  5. Linux Communication Mechanism Summarize
  6. OAuth2.0认证和授权原理
  7. map 几种遍历方法
  8. .net mvc4 利用 kindeditor 上传本地图片
  9. js中数组以及for循环的使用
  10. Effective Java之最佳建议