WPF最重要的5类事件:

生命周期事件:这些事件将在元素被初始化,加载或卸载时发生。
鼠标事件 这些事件是鼠标动作的结果。
键盘事件 这些事件是键盘动作的结果。
手写笔事件 这些事件是作用类似铅笔的手写笔的结果,

1.生命周期事件 当首次创建以及释放所有元素时都会引发事件
a.Initialized 元素被实例化,并且已经根据XAML标记设置了元素的属性之后发生。这时元素已经初始化,但是窗口的其他部分可能还没有初始化。此外,还没有应用样式和数据绑定。它是一个普通的.NET事件===不是路由事件,在这其中每个元素分支都以自下而上的方式被初始化。这意味着位于深层的嵌套元素在它们的窗口之前先被初始化。当引发初始化事件时,可以确保元素树中当前元素以下的所有元素已经全部完成 了初始化。但是,包含当前元素的元素可能还没有初始化,并且不能假定窗口的任何其他部分已经初始化完成,在每个元素都完成了初始化之后,还需要在它们的容器中进行布局,应用样式,如果需要的话还会绑定到数据源。当窗口的Initialized事件被引发后就可以进入到下一阶段了。
b.Loaded 事件 当整个窗口已经初始化资助已经应用了样式和数据绑定时,该事件发生。这是在元素被呈现之前的最后一站。这时, IsLoaded 属性为true.
c.Unloaded 当元素被释放时,该事件发生,原因是包含元素的窗口被关闭或特定的元素被从窗口中删除

Initialized 事件和Loaded事件之间的关系,分析一下页面的呈现过程是有帮助的,FrameworkElement类实现了ISuppertInitialize接口,该接口提供了两个用于控制初始化过程的方法。第一个是BeginInit()方法,在实例化元素后会立即调用该方法。BeginInit()方法被调用之后,XAML解析器设置所有元素的属性。第二个是EndInit()方法。当初始化完成后,该方法被调用,此时引发Initalized事件。
    当创建窗口时,每个元素分支都以自下而上的方式被初始化。这意味着位于深层的嵌套元素在它们的容器之前先被初始化。当引发初始化事件时,可以确保元素树中当前元素以下的元素已经全部完成了初始化。但是,包含当前元素的元素可能 还没有初始化,并且不能假定窗口的任何其他部分已经初始化。
    在每个元素都完成了初始化之后,还需要在它们的容器中进行布局,应用样式,如果需要的话还会绑定到数据源。当窗口的Initialized事件被引发后就可以进入到下一阶段了。

一旦初始化过程完成,应付引发Loaded事件。Loaded事件和Initialized事件的发生过程相后---换句话说,包含其他所有元素的窗口首先引发Loaded事件,然后才是更深层的嵌套元素。当为所有的元素都引发了Loaded事件之后,窗口就变的可见了,并且 元素都已被呈现。

2.键盘事件:

当用户按下键盘上的一个鍵时,就会发生一系列事件如下:

键盘处理永远不会和上面看到的那么简单。一些控件可能会挂起这些事件中的某些事件,从而可以执行它们自己更特殊的键盘处理。最显著的例子是TextBox控件,它挂起了TextInput 事件,但它自己添加了一个名为TextChanged的新事件。在一个按键导致文本框中的文本发生改变之后会立即引发该事件。

鼠标单击事件:
    鼠标单击事件的引发方式和按键事件的引发方式有些类似。区别是对于鼠标左键和鼠标右键引发不同的事件。如下 图:

所有鼠标键事件都提供一个MouseButtonEventArgs对象。MouseButtonEventArgs类继承自MouseEventArgs类,并且添加了几个成员。这些成员中相对不重要的是MoseButton和ButtonState(该成员用于通知当事件发生时鼠标是处于按下状态还是释放状态)

最新文章

  1. 解决 U 盘写保护的问题
  2. msql数据迁移,myisam及innoDB
  3. EditPlus怎样自动换行
  4. centos 命令大全
  5. 隐马尔科夫模型HMM学习最佳范例
  6. OC----简单的购物系统----
  7. Java_Ant 详解
  8. delphi的几个特别关键字 object absolute
  9. 调整V7连保监平台时问题
  10. Android权限安全(8)ContentProvider基于URI的安全
  11. (转)sqlserver游标概念与实例全面解说
  12. hdu 3617 Happy 2009
  13. Universal Asynchronous Receiver/Transmitter
  14. bzoj 1486: [HNOI2009]最小圈 dfs求负环
  15. struts.xml在Action配置具体解释
  16. Swing-JMenu菜单用法-入门
  17. CSS3 三角形运用
  18. Snapde怎么添加行和列
  19. 报文分析2、IP头的结构
  20. 利用sqlserver sa更改系统密码

热门文章

  1. python 基础 6.0 异常的常用形式
  2. 九度OJ 1006:ZOJ问题 (递归)
  3. 九度OJ 1067:n的阶乘 (数字特性)
  4. framemarker的使用
  5. iOS怎样获取任何App的资源图片?
  6. mysqldump的--master-data参数
  7. 性能测试--siege
  8. Hadoop实战-Flume之Source regex_extractor(十二)
  9. linux c编程:gdb的使用
  10. GStreamer 从摄像头获取图像 转264