WPF学习系列之四(WPF事件5大类)
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(该成员用于通知当事件发生时鼠标是处于按下状态还是释放状态)
WPF学习系列之四(WPF事件5大类)的更多相关文章
- SQL Server 学习系列之四(SQL 内幕)
SQL Server 学习系列之四(SQL 内幕) SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL ...
- WPF学习系列之五(WPF控件)
控件: 1.内容控件------这些控件能够包含嵌套的元素,为它们提供几乎无限的显示能力.内容控件包括Lable,Button 以及ToolTip类. 内容控件是更特殊的控件类型,它们可以包含( ...
- 大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)
引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用 ...
- 【WPF学习】第二十六章 Application类——应用程序的生命周期
在WPF中,应用程序会经历简单的生命周期.在应用程序启动后,将立即创建应用程序对象,在应用程序运行时触发各种应用程序事件,你可以选择监视其中的某些事件.最后,当释放应用程序对象时,应用程序将结束. 一 ...
- WPF学习系列之八(形状,画刷和变换)
形状,画刷和变换 概述: 在许多用户界面技术中,普通控件和自定义绘图之间具有清晰的区别.通常来说,绘图特性只用于特定的应用程序--如游戏,数据可视化和物理仿真等.而WPF具有一个非常不同的原则.它 ...
- WPF学习系列 简单的窗体设置
今天要学习的源码是一个窗体设置.效果如下,可拖拽.这让我想起了vs的启动界面 下面是源码的情况 项目结构: 窗体代码: cs代码 1.新建项目 略 2.设置窗体 AllowsTransparency= ...
- WPF学习系列 游戏-选张图片做成9宫格拼图
今天要学习一个拼图项目. 目标是传入一张图片,然后将它分成9份,去掉一份,鼠标点击进行拼图. 源文件结构很简单 第一步.新建项目 这一步没什么好说的,新建一个项目就跟源文件结构一样了 第二步.页面布局 ...
- WPF学习系列之七 (样式与行为)
样式(Styles)是组织和重用格式化选项的重要工具.不是使用重复的标记填充XAML,以设置诸如边距.颜色及字体等细节,而可以创建一系列封装所有这些细节的样式.然后可以在需要之处通过一个属性应用样式. ...
- WPF学习系列 绘制旋转的立方体
我是一年经验的web程序员,想学习一下wpf,比较喜欢做项目来学习,所以在网上找了一些项目,分析代码,尽量能够做到自己重新敲出来 第一个项目是 中间的方块会不停的旋转. 第一步,新建wpf项目 第二步 ...
随机推荐
- C#中图片.BYTE[]和base64string的转换
在C#中 图片到byte[]再到base64string的转换: Bitmap bmp = new Bitmap(filepath); MemoryStream ms = ...
- 【BZOJ1115】[POI2009]石子游戏Kam 阶梯博弈
[BZOJ1115][POI2009]石子游戏Kam Description 有N堆石子,除了第一堆外,每堆石子个数都不少于前一堆的石子个数.两人轮流操作每次操作可以从一堆石子中移走任意多石子,但是要 ...
- 高性能流媒体服务器EasyDSS前端重构(二) webpack + vue + AdminLTE 多页面提取共用文件, 优化编译时间
本文围绕着实现EasyDSS高性能流媒体服务器的前端框架来展开的,具体EasyDSS的相关信息可在:www.easydss.com 找到! 接上回 <高性能流媒体服务器EasyDSS前端重构(一 ...
- [转]Struts form传值
Struts form传值 大约三四个月没用过struts框架,突然想拾起来,却发现好多都忘了.出现传值传不过来的问题.没办法,上网查了一下,看见了一位老师的帖子,总结的很好.特此转载与分享,文末附链 ...
- 九度OJ 1051:数字阶梯求和 (大数运算)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6718 解决:2280 题目描述: 给定a和n,计算a+aa+aaa+a...a(n个a)的和. 输入: 测试数据有多组,输入a,n(1&l ...
- curl post 请求 es 数据 REST 批量删除
curl -d "keyword=牛" http://api.com/path/index curl模拟http发送get或post接口测试 - 一生守候 - 博客园 http ...
- Bootstrap aggregating Bagging 合奏 Ensemble Neural Network
zh.wikipedia.org/wiki/Bagging算法 Bagging算法 (英语:Bootstrap aggregating,引导聚集算法),又称装袋算法,是机器学习领域的一种团体学习算法. ...
- 题解 CF576C 【Points on Plane】
题解 CF576C [Points on Plane] 一道很好的思维题. 传送门 我们看这个曼哈顿距离,显然如果有一边是按顺序排列的,显然是最优的,那另一边怎么办呢? 假如你正在\(ioi\)赛场上 ...
- Spring/Java error: namespace element 'annotation-config' … on JDK 1.5 and higher
Extract the jar file: mkdir spring cd spring jar xvf ../spring.jar Check the Spring version in META- ...
- STemWin显示汉字 — SD卡外挂XBF字库
转载注明出处 方法来自安福莱教程 1: 使用emWin自带小工具生成字库 (1)启动软件 选择4位抗锯齿 (2)根据需求选择字体类型和字体大小 (3)另存为XBF格式 2: 创建XBF字体 #inc ...