一、高级API
- 类似 Web 的布局
- 丰富的绘图、文本模型
- 动画
- 支持音视频
- 样式和模板
- 命令
- 声明式用户界面
- 基于页面的应用程序
二、分辨率无关性
WPF 实现理想状态:
在更高的分辨率下,应用程序的图标保持原来的大小,只展示更多的细节
三、WPF体系结构
- 顶层:托管的 WPF API
- PresentationFramework.dll
包含 WPF 顶层的类型
包括表示窗口、面板等控件的类型,样式
- PresentationCore.dll
包含基础类型:UIElement 类和 Visual 类
- WindowsBase.dll
包含更多基本要素,具有在 WPF 之外重用的潜能,
如 DispatcherObject 类和 DependencyObject 类
- 媒体集成层
- milcore.dll:渲染系统的核心。
其合成引擎将可视化元素转换为 Direct3D 所期望的三角形和纹理。
- WindowsCodecs.dll:一套提供图像支持的 API
(如处理、显示、缩放位图和 JPEG 图像)
- Direct3D 和 User32
- Direct3D:一套低级 API,WPF应用程序中的所有图形都有它进行渲染
- User32:决定哪些程序实际占有桌面的哪一部分。
仍被包含在 WPF 中,但不再负责渲染通用控件。
四、类层次结构:
ItemsControl + ContentControl
-> Control + Shape、Panel
-> FrameworkElement
-> UIElement
-> Visual
-> DependencyObject
-> DispatcherObject
===============================================
核心名称空间以 System.Windows 开头
System.Windows、System.Windows.Controls、System.Windows.Media,
例外:System.Windows.Forms(Windows 窗体工具包的一部分)
===============================================
1. System.Threading.DispatcherObject 类
1)WPF 应用程序使用单线程亲和(Single-Thread Affinity, STA)模型;
2)整个用户界面由单个线程所有;
3)每个 WPF 应用程序由协调消息的调度程序管理;
4)协调消息:键盘输入、鼠标移动乃至布局处理。
2. System.Windows.DependencyObject 类
通过继承自 DependencyObject 类,WPF 类可获得对依赖项属性的支持。
3. System.Windows.Media.Visual 类
WPF 窗口的每个元素本质上都是 Visual 对象。
4. System.Windows.UIElement 类
增加了对 WPF 本质特征的支持;
如布局、输入、焦点和时间,路由事件和命令。
5. System.Windows.FrameworkElement 类
1)WPF 核心继承树中的最后一站;
2)实现了一些全部由 UIElement 类定义的成员;
3)UIElement 为 WPF 布局系统设置了基础,添加了对数据绑定、动画以及样式等核心特性的支持;
4)而FrameworkElement 类提供了支持它的重要属性(HorizontalAlignment 和 Margin属性等)。
6. System.Windows.Shapes.Shape 类
基本的形状类(Rectangle 类、Polygon 类…)
7. System.Windows.Controls.Control 类
1)包括交互的元素:TextBox 类、Button 类、ListBox 类等;
2)强大的模板支持;
3)控件是用于交互的元素。但是许多元素在 System.Windows.Controls 名称定义,但不继承自 System.Windows.Controls.Control 类,因此不被认为是控件。如 Panel。
8. System.Windows.Controls.ContentControl 类
是所有具有单一内容的控件的基类。
包括:标签、普通字符串、其他形状和控件组合的布局面板
9. System.Windows.Controls.ItemsContrl 类
是所有显示选项集合的控件的基类,如:ListBox 和 TreeView 控件。
10. System.Windows.Controls.Panel 类
布局容器的基类。
内容将同步到微信公众号:广州 WPF 开发