2000条你应知的WPF小姿势 基础篇22-27 WPF生命周期, 基础类等
原文:2000条你应知的WPF小姿势 基础篇
端午长假在家陪着女朋友, 幸福感满满,生活对于一只饱经忧患的程序猿来说也是非常重要的,也就暂时没有更新博客。休假结束,回归奋斗的日子了,开始继续更新WPF系列。
在正文开始之前需要介绍一个人:Sean . 来自明尼苏达双城的软件工程师。最为出色的是他维护了两个博客:2, You Know About C#和2,000 You Know 。他以类似微博式的150字简短语言来每天更新一条WPF和C#重要又容易被遗忘的知识。他的博客也有一段日子了,很希望能够分享给大家。
本系列我不仅会翻译他的每一个tip,也会加入自己开发之中的看法和见解。本系列我希望自己也能和他一样坚持下来,每天的进步才能促成伟大。
在这里郑重说明.该系列是基于Sean 先生的英文博客, Sean 拥有全部版权和撤销权利。
前文:WPF,渲染, 矢量, 布局, 样式, 模板, 命令, xaml, page, 3d, , wpf, ,,
[小九的学堂,致力于以平凡的语言描述不平凡的技术。如要转载,请注明来源:小九的学堂。/]
#22
Class 继承自,是与用户交互的所有控件的基类。例如有:, Label, , and 。但有一些容器比如Panel和Grid并不是控件。
Class 扩展了,拥有如下延伸的功能:
1. 通过使用来更改空间的外观。
2. 支持更改字体,边框, 背景色等视觉元素。
#23 WPF项目的五种形态
使用WPF你可以开发如下五种形态的项目:
2. XAML 浏览器应用程序(XBAP) - 在浏览器上运行的基于Page的应用程序
3. 自定义控件库 - 继承自并对其改写,私人定制,封装成dll库。
4. 用户控件库 - 从派生创建的自定义控件,封装成dll库。
5. 基础类库 - 封装一般类为dll库。
#24 Class
class 呈现了一个在上运行的一个独立的wpf客户端应用程序。每个运行中的WPF应用程序都具有一个类的单例。
使用VS创建的WPF应用程序会在App.Xaml自动生成对象定义的应用程序:
<Application x:Class="WpfApplication9.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"StartupUri="MainWindow.xaml"><Application.Resources>Application.Resources> Application>
类负责:
1. 管理应用程序的生命周期(如Start和Close)
2. 管理窗口,资源以及各种项目的基础属性。
3. 命令行处理
4. 页面导航。
#25 Class
Class 在WPF中呈现了一个窗口。他派生自, 也就是说它只能有单一的子元素。它直接继承自,间接继承了, , , , and .
一个窗口在视觉的角度上拥有一个客户端区域(窗口内)和非客户端区域(标题栏,框架,最小/最大/关闭 按钮).它是跟用户交互的WPF独立程序的外壳。可以通过定制来实现不同的外观效果。
你可以通过启动,关闭,隐藏,显示等事件来管理一个的生命周期。
Xaml Code:
<Window x:Class="WpfApplication9.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow" Height="200" Width="250"><Grid><Label Content="I'm a WPF Window!" Height="28" HorizontalAlignment="Center" VerticalAlignment="Center" />Grid> Window>
效果:
#26 WPF生命周期
下图展现了WPF的生命周期以及其事件:
相关触发的主要事件有:
1. -应用程序启动
2. Exit - 应用程序关闭。
3. - 应用程序获得焦点时触发,也就是成为前台程序。
4. - 应用程序失去焦点时,也就是不再是前台程序时。
5. - 当一个异常被抛出时,你可以选择处理或者是抛出该异常。
6. - 正在关闭时,无论是注销还是关机,都会触发该事件。你可以选择取消关机。
你可以通过重写On[]方法来添加对事件的处理, 如 。
#27 at and 窗口在创建和关闭时相继触发的事件
时会触发的事件有:
时触发的事件有: