1 W PF 程序设计 WPF 是下一代显示系统,用于生成能带给用户震撼视觉体验的Windows 客户端应用程序。使用WPF,你可以创建广泛的独立应用程序以及浏览器承载的应用程序。如下图所示的Contoso 公司的卫生保健样本应用程序: WPF 作为.NET 框架类型的一个子集存在,这些类型大多位于System.Windows 命名空间。如果你以前已使用.NET 框架通过诸如ASP.NET 和Windows 窗体之类的托管技术生成应用程序,那么你应该熟悉WPF 的基本编程体验;你可以使用你最喜爱的.NET 框架编程语言(如C# 或Visual Basic)实例化类、设置属性、调用方法以及处理事件。 为了支持某些更强大的WPF 功能并简化编程体验,WPF 包括了更多编程构造,这些编程构造增强了属性和事件:依赖项属性和路由事件。 12.1.1 构成 WPF 主要由 MIL(Media Integration Layer,媒体集成层)、编解码器、展示核心和展示框架四部分构成,参见下图: GDI Kernel CLR GDI+ DirectX User 编解码器 MIL 展示核心 展示框架 Win32/64 .NET 托管代码 本地代码 GDI+的托管封装 Windows 窗体 2 WPF 架构图 图中的红色部分是WPF 的主要部件,其中的MIL 和编解码器合称为milcore(MIL 核心,对应的DLL 为milcore.dll)是用本地代码编写的非托管组件,目的是实现与DirectX 的紧密集成。WPF 中的所有显示是通过DirectX 引擎完成的,可实现高效的硬件和软件呈现。WPF 还要求对内存和执行进行精确控制。而MIL 中的组合引擎受性能影响关系大,所以才需要放弃CLR 的许多优点来提高性能。WPF 的另外两个组件——展示核心(对应的程序集为PresentationCore.dll)和展示框架(对应的程序集为PresentationFramework.dll)则是用托管代码编写的(对应的程序集DLL 缺省安装时都位于目录 C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\中)。WPF 主要编程模型是通过托管代码公开的。在WPF 的早期设计阶段,曾有过大量关于如何界定系统的托管组件和非托管组件的争论。CLR提供一系列的功能,可以令开发效率更高并且更加可靠(包括内存管理、错误处理和通用类型系统等),但这是需要付出代价的。 图中的黄色部分是.NET 传统的图形界面,其基础是对平面 GDI+的托管封装,用户界面则是Windows 窗体,它们都离不开底层的GDI。 图中的其余部分都是Windows 的部件。其中深蓝色部分为Windows 的传统三大部件——核心(Kernal)/ 用户...