学习目标:
提示:什么是WPF
目标:
- 掌握 XAML入门知识和使用
学习时间:
提示:每天学习
学习规划:
- 周一至周日
- 周六上午 9 点-上午 6 点
- 周日下午 9点-下午 6 点
学习产出:
提示:学到了什么...
Microsoft在构建WPF时遵循了以下设计原则:
-
集成
WPF被设计成开发应用程序的单一模型,可以通过类似的程序代码来实现动画、数据窗体以及三维模型的开发。
-
向量图形
WPF实现了一个向是不是图形引擎,可以在不损失图形显示质量的情况下,根据特定的显示器分辨对图形进行缩放,而这对于原来的固定大小的光栅化图形来说几乎是不可能的。WPF利用Direct3D对向量图形进行绘制,并利用支持DirectX显卡的图形处理单元(GPU)进行图形渲染。WPF实现了一个基于浮点数的逻辑像素系统,并支持32位的ARGB颜色。
-
声明式编程
-
简化的部署
-
可移植文档
与可移植文档格式(Portable Document Format, PDF)类似,XPS允许文档在多台计算机间共享,
-
WPF体系结构
WPF体系结构包括非托管的服务、托管的子系统、WPF应用程序所需要的托管API,称为虽现架构(presentation framework)1. 元素系统
元素树
逻辑树
可视化树- 下面是为ElementTrees.Sample元素创建的一些附加元素: - 1.System.Windows.Controls.Border ——— 该控件将为相应的控件绘制一个边框和/或背景。Border控件通常用于许多使用默认属性的控件,例如System.Windows.Controls。Canvas、System.Windows.Controls.Label和System.Windows.Controls.Textbox等。 - 2.System.Windows.Controls.Grid —— 与HTML表格类似,Grid控件通过使用行与列为其包含的控件进行布局和配置提供了一个灵活的空间。但需要注意的是,虽然都基于行与列,但Grid控件与另一个控件Table控件是完全不同的,System.Windows.Documents.Table用于提供独立块内容。它们继续自不同的类,Grid继承自System.Windows.Controls.Panel。 - 3.System.Windows.Documents.AdornerDecorator——该控件用于为元素所属控件添加样式。 - 4.System.Windows.Documents.AdornerLayer——AdornerLayer控件代表用于渲染装饰器的表面。 - 5.System.Windows.Controls.ContentPresenter——该控件用于标识一个区域,该区域用于加载可视化树中特定控件的内容。ContentPresenter控件标识ElementTrees.Sample的内容将被定位在何处。 - System.Windows.Controls.Primitives.ResizeGrid——该控件为可视化树中的窗口添加一个可调节尺寸的网格。这样,和WPF应用程序主窗口的交互就会被ResizeGrid捕获,从而使用应用程序可以做出相应(例如,由于放大或缩小主窗口引起的在新的界面上的布局改变)
注意: 尽管可以同时通过代码来访问逻辑树和可视化树,但是在开发WPF应用程序时,通常会将主要精力用于逻辑权与控件及其属性、方法和事件之间的交互上。
2.可视化系统
该子系统检测查应用程序内的所有组件(标签、按钮、文本、二维与三维图形、动画),并负责和底层的组织系统进行通信,以在发工资幕上生成渲染结果,大量的关键工作还是由底层的组织系统来完成。3.字体系统
Windows中有两个字体引擎,即GDI与Uniscribe,这两个字体引擎都具有明显的缺陷,页不适用WPF.4.输入/事件系统
WPF支持一个紧凑输入/事件系统,它为用户通过可视化树进行输入提供了流线弄的集成。注意: 字体系统是 一个托管组件,它运行于进程外,并通过内部进程通信直接与WPF通信,从而共享缓存中的字体数据。与字体系统进行交互的两个主要子系统是元素系统与可视化系统,
素系统与可视化系统作用分别如下:
- 字体系统与元素系统的页面和表格服务(Page and Table Service, PTF)交互。PTF负责在用户界面中组织和布局文本,包括图形、表格和文本。
- 可视化系统利用字体系统实现在一条线上布局文本服务,例如紧缩、前导与音隔。
5.属性系统
属性系统是WPF中与核心数据相关的功能的整体。它由以下三个主要组件构成:- 改变通知
- 存储
- 表达式
注意: Style元素为WPF控件提供了自定义样式的机制。如果使用表达式,在WPF应用程序中可以使用以下两种方法中的一种为元素应用样式:通过TargetType属性,或者通过标识并存储在Style元素的x:Key属性中的唯一样式。
6.消息传递系统
7.组织系统
***注意:***尽管WPF利用GPU实现的是基于硬件的渲染,但在硬件功能不支持的情况下,也可以退而实现基于软件的渲染。 -
XAML
声明式与命令式
- 布局用户界面——在一个窗体上定义并设置控件,通常在可视化设计器的辅助下完成
- 创建绑定——将数据绑定控件与数据源相关联,数据源通常是数据库或相关的数据访问的对象
- 处理用户交互——配置控件事件,使用户交互触发应用程序逻辑,从而对数据和/或用户界面进行操作
1.XAML运行时支持
小结- 元素系统与元素树(可视化树与逻辑树)
- 可视化系统
- 字体系统
- 输入/事件系统
- 属性系统(改变通知、存储与表达式)
- 消息传递系统
- 组织系统
WPF应用程序的可视化设计工具,包括XamlPad 与 Microsoft Expression Blend