标题：WPF高级编程
WPF高级编程
作者:(美国)(Andrade.C.)安德拉德 等
译者:王德才 吴明飞 
市场价：￥56.00
·出版社：清华大学出版社
·页码：400 页码
·出版日：2008年
·ISBN：9787302183563
·版次：1版
·装帧：平装
·开本：16
·外文书名：Professional WPF Programming
内容简介
《WPF高级编程》主要介绍WPF开发技术、模式和案例。
《WPF高级编程》以“WPF概述”作为开始。在第1章中，首先回答了“WPF是什么？”、“如何开始使用WPF？”以及“WPF能够带来什么？”等几个问题，然后详细分析了WPF开发平台提供的各个子系统及其图形特征。
概述WPF之后，将进入WPF开发技术部分。《WPF高级编程》通过使用Visual Studio创建几个示例程序，带领您快速进入应用程序开发。此外，还将介绍XAML—— 创建用户界面的新标记语言。XAML实际上是独立于WPF的一项技术，但在WPF中广泛使用了XAML。
掌握了WPF的基本概念和开发技术之后，《WPF高级编程》将带领读者进入设计工具的世界。Microsoft提供了许多引人注目的新的设计工具系列。在《WPF高级编程》中将学习使用新的Microsoft Expression Blend工具。通过使用Expression Blend，可以创建高级的用户界面，学习实现样式、布局与动画。读者还将发现，将界面设计保存到XAML文件中，然后在Visual Studio中使用完全相同的标记语言编写应用程序逻辑是多么的容易。
接下来，将介绍如何使用WPF创建特殊效果，包括位图效果、变换，以及使用画刷对象创建玻璃或反射效果等。《WPF高级编程》演示了这些技术，并为在应用程序中创建绚丽的可视化元素提供了基础。
在学习完特殊效果之后，将介绍如何使用WPF创建自定义控件。WPF提供了一个极好的自定义对象模型，允许运用各种风格和已存在的各种元素模板。该模型是一个令人满意的新模型，允许将几乎任何元素放置在另一个元素中。通过这个新功能，在整个创建自定义控件的过程中，都不会遇到问题。当然，任何事物都不是绝对的，使用WPF创建自定义控件，也有可能会遇到一些问题。本部分内容包括在什么情况下需要考虑创建自定义控件，以及如何创建自定义控件。
接下来，将进入WPF应用程序的企业应用开发部分。使用WPF可以创建两种风格的应用程序：基于Windows的单机运行的应用程序与基于Web的应用程序。这两种类型的程序基于相同的代码，即XAML与.NET。这意味着为应用程序指定目标主机环境，只需要简单改变工程文件的设置并管理这些配置即可。这项功能是非常强大的，在《WPF高级编程》的企业开发主题中，对这一功能进行了全面介绍。
在理解了应用程序模型与配置之后，读者可能想了解安全问题。WPF的安全基于.NET 2.0的CAS安全模型，与所选择的应用程序模型以及运行环境也有关。如果WPF程序运行于浏览器中，将涉及到Internet区域安全设置。《WPF高级编程》将深入介绍这些内容。
在探讨了WPF应用程序开发、配置基础，并全面分析了WPF应用程序的安全之后，《WPF高级编程》将进入一些高级主题。这些高级主题之一就是如何混合使用Win32与WPF代码。《WPF高级编程》中将涉及互操作的相关问题。在Win32程序中使用WPF以及在WPF程序中使用Win32都是可行的，《WPF高级编程》将介绍如何实现这一特征，从而可以使读者快速掌握如何将WPF用于Win32程序中。
《WPF高级编程》最后深入研究了体系结构、WPF架构、XAML以及多线程问题。此外，还介绍了Windows Workflow Foundation(WF)与Windows Communication Foundation(WCF)，从而使读者可以熟悉.NET Framework 3.0的其他组件。在理解了这些重要组件之后，读者还将学习如何构建一个简单的WCF服务与一个简单的WF工作流应用程序。
目录
第1章　WPF概述 1
1.1　WindowsAPI的简要历史 1
1.1.1　平台演化 2
1.1.2　.NETFramework3.0介绍 2
1.2　初识WindowsPresentationFoundation 3
1.2.1　设计指导原则 3
1.2.2　WPF体系结构 5
1.3　XAML 13
1.4　可视化设计工具 16
1.4.1　XamlPad 16
1.4.2　MicrosoftExpressionBlend 17
1.4.3　WPF可视化设计器 18
1.4.4　ElectricRainZAM3D 19
1.4.5　MobiformAurora 19
1.5　小结 20
第2章　WPF与.NET编程 23
2.1　开始 23
2.1.1　需要安装的软件 24
2.1.2　WPF应用程序类型 24
2.1.3　第一个WPF应用程序 25
2.2　WPF开发概念 27
2.2.1　XAML 27
2.2.2　Application对象 28
2.2.3　创建用户界面 30
2.2.4　事件处理 32
2.2.5　使用控件 38
2.2.6　触发器 47
2.2.7　语言支持 55
2.2.8　部署 57
2.3　小结 57
第3章　WPF应用程序深入剖析 59
3.1　项目组成 59
3.1.1　App.Manifest 61
3.1.2　AssemblyInfo.cs 61
3.1.3　Resources.resx 63
3.1.4　Settings.settings 63
3.1.5　MyApp.xaml 65
3.2　.NETFramework3.0Windows应用程序 66
3.3　XAML浏览器应用程序 68
3.4　WCF服务库 70
3.5　WPF自定义控件库 73
3.6　小结 77
第4章　使用MicrosoftExpression
Blend构建富用户界面：
第一部分 79
4.1　概述 79
4.2　设计环境 80
4.2.1　工作空间面板 81
4.2.2　艺术板 82
4.2.3　配置环境 83
4.3　项目结构 84
4.3.1　添加一个新项目文件 84
4.3.2　构建与部署一个项目 85
4.4　创建向量对象 85
4.4.1　形状 86
4.4.2　路径 87
4.5　使用属性面板操作对象 88
4.5.1　变换面板 88
4.5.2　画刷面板 88
4.5.3　透明性、透明度与可见度 90
4.6　操作文本 91
4.7　管理布局 92
4.7.1　用户界面布局面板 93
4.7.2　其他布局控件 95
4.7.3　嵌套布局面板 96
4.8　动画 96
4.8.1　时间线子面板 96
4.8.2　关键帧 98
4.8.3　为对象的属性添加动画 98
4.8.4　运动路径 98
4.8.5　触发器 99
4.8.6　创建控件 100
4.8.7　模板 102
4.8.8　样式 103
4.8.9　状态 103
4.8.10　导入音频/视频媒体 104
4.9　小结 104
第5章　使用MicrosoftExpressionBlend构建富用户界面：
第二部分 105
5.1　ExpressionBlend工作流 105
5.2　处理用户输入 108
5.2.1　键盘和鼠标类 108
5.2.2　事件与事件处理 108
5.2.3　定位 110
5.2.4　命中测试 114
5.3　WPF动画API 124
5.3.1　动画类 124
5.3.2　使用代码通过编程创建动态动画 124
5.3.3　程序动画 127
5.4　使用故事板进行交互 132
5.5　WPF绘图API 134
5.5.1　Geometry类 134
5.5.2　Shape类 134
5.5.3　画刷 138
5.6　小结 141
第6章　特殊效果 143
6.1　画刷 144
6.1.1　SolidColorBrash 144
6.1.2　GradientBrush 150
6.1.3　ImageBrush 153
6.1.4　DrawingBrush 155
6.1.5　VisualBrush 156
6.2　位图效果 158
6.3　变换 163
6.3.1　TranslateTransform类 165
6.3.2　ScaleTransform类 168
6.3.3　SkewTransform类 171
6.3.4　RotateTransform类 173
6.3.5　透明掩码 176
6.4　综合运用--组合效果 178
6.4.1　具有反射效果的跳跃
小球示例程序 178
6.4.2　动画图像观察器示例程序 184
6.5　小结 190
第7章　自定义控件 191
7.1　概述 191
7.2　控件基类 192
7.2.1　UserControl类 193
7.2.2　创建用户控件 193
7.3　WPF中的数据绑定 202
7.3.1　绑定标记扩展 202
7.3.2　绑定模式 202
7.3.3　数据模板 204
7.3.4　数据转换 205
7.4　创建和编辑样式 207
7.4.1　为样式指定目标类型 208
7.4.2　继承和覆盖样式 209
7.4.3　样式触发器 210
7.5　使用模板定制已有的控件 212
7.6　小结 215
第8章　WPF企业开发 217
8.1　WPF应用程序模型 218
8.1.1　单机应用程序 219
8.1.2　基于浏览器的应用程序 221
8.1.3　安全考虑 230
8.2　状态管理 231
8.2.1　Application对象 231
8.2.2　独立存储 233
8.2.3　状态管理示例程序 235
8.3　导航 241
8.3.1　导航元素 241
8.3.2　结构化导航 242
8.3.3　导航拓扑 252
8.4　应用程序本地化 269
8.4.1　自动布局指导原则 270
8.4.2　使用网格以达到灵活性 272
8.4.3　本地化属性和注释 273
8.5　WPF部署模型 274
8.5.1　生成应用程序 275
8.5.2　部署单机Windows
应用程序 276
8.5.3　部署XAML浏览器应用程序 277
8.5.4　部署.NETFramework3.0运行库 278
8.6　小结 280
第9章　安全性 281
9.1　WPF安全模型 281
9.2　受信任的应用程序与Express应用程序 282
9.3　核心操作系统安全性 282
9.3.1　LUA 282
9.3.2　虚拟化 283
9.3.3　沙箱 283
9.3.4　下一代密码 283
9.4　CLR安全性 284
9.4.1　代码访问安全性 284
9.4.2　临界代码方法 291
9.4.3　验证 292
9.5　MicrosoftInternetExplorer的安全性 293
9.5.1　区域限制 293
9.5.2　XBAP沙箱工作区 294
9.5.3　XAML浏览器应用程序的安全性 294
9.6　ClickOnce安全性 301
9.6.1　受信任的发布者 301
9.6.2　个人证书文件 302
9.7　.NET3.0安全性实用程序 305
9.8　小结 305
第10章　WPF与Win32交互 307
10.1　Win32用户界面概述 307
10.2　WPF和HWND如何交互操作 308
10.3　在WPF中使用Win32HWND 309
10.4　在Win32应用程序中使用WPF 312
10.5　为WPF添加Windows窗体控件 314
10.5.1　在代码中添加WindowsFormsHost 314
10.5.2　在XAML代码中添加HwndHost 316
10.5.3　为WPF添加ActiveX控件 316
10.5.4　在XAML代码中添加ActiveX控件 321
10.5.5　为Windows窗体添加WPF控件 322
10.5.6　影响控件属性 326
10.6　小结 328
第11章　高级开发主题 329
11.1　WPF体系结构 330
11.1.1　核心子系统 331
11.1.2　WPF线程模型 334
11.1.3　桌面窗口管理器 335
11.2　WPF框架 336
11.2.1　Dispatcher对象 337
11.2.2　DependencyObject/DependencyProperty类 337
11.2.3　Application类 338
11.2.4　Freezable类 339
11.2.5　Visual类 339
11.2.6　UIElement类 345
11.2.7　FrameworkElement类 345
11.2.8　Control类 346
11.3　XAML深入分析 347
11.3.1　XAML的后台工作 348
11.3.2　动态操作XAML 352
11.3.3　解析Window1.xaml 356
11.3.4　XAML标记扩展 360
11.3.5　XAML与自定义类型 360
11.4　WPF多线程 362
11.4.1　单线程应用程序模型 363
11.4.2　线程关联度与DispatcherObject 363
11.4.3　WPF分发器 364
11.4.4　使用单线程应用程序 365
11.4.5　异步线程 367
11.5　Windows通信基础WCF 372
11.5.1　服务定向 372
11.5.2　WCF体系结构 373
11.5.3　WCF基础 374
11.5.4　构建一个WCF服务 376
11.6　Windows工作流基础 383
11.6.1　工作流定义 384
11.6.2　WF体系结构 384
11.6.3　WF基础 385
11.7　小结 399
……
序言
对于使用Microsoft技术的开发人员来说，这是一个激动人心的时刻。众多新平台、新技术以及新工具的不断涌现，使开发人员的舞台迅速扩大。其中，来自微软的一个新平台是.NETFramework3.0，WindowsPresentationFoundation（WPF）是该平台的一个核心组件，也是本书的主题。WPF为开发人员和设计人员提供了一个统一的平台，便于他们创建能够充分利用现代PC硬件设备的图形功能的多媒体（rich-media）应用程序。
在过去的几十年中，我们经历了使用命令行界面的漫长时间。今天的应用程序用户，希望使用新型的、吸引人的可视化交互界面，其中部分原因是他们在Internet上面对的是媒体和内容都很丰富的用户界面。WPF正是为迎合这种需求而诞生的，它可以综合使用多种类型的媒体，包括动画、视频和音频，来创建富用户界面。此外，通过使用一种新的标记语言XAML和一套新的设计工具MicrosoftExpressionBlend，设计人员和开发人员能够在开发同一个项目时实现无缝合作，这在以前是不可能的。在WPF推出之前，设计人员创建各种图形元素，并将这些图形元素以图像文件的形式交给开发人员，然后开发人员使用这些图形元素构建用户界面。现在，设计人员可以使用ExpressionBlend设计用户界面，并将设计模型保存为XAML文件，然后只需将XAML文件交给开发人员，开发人员再在VisualStudio中使用WPF编写代码即可。
本书将详细讲解WindowsPresentationFoundation的概念和构成组件。通过本书可以学习如何创建富用户界面，如何使用WPF提供的各种新控件，以及如何利用WPF提供的新内容模型。本书将探讨WPF对象模型，以及WPF新提供的子系统，例如附属属性系统（dependencypropertysystem）和事件传递模型（routedeventmodel）。在本书中还将介绍如何开发和配置用于桌面和浏览器的WPF应用程序。本书中还包括新的XAML语法（XAML是一种为WPF应用程序定义用户界面的新标记语言，不管这些应用程序是基于Windows环境的还是面向Web的）、ExpressionBlend使用基础和Microsoft新提供的图形设计工具。
WPF是一个非常大的平台，本书将尽可能多地涉及其各个方面，我们的目标是使读者不仅了解WPF平台提供了哪些内容，而且学会如何使用该平台。当然，因为WPF是一个很大的平台，所以本书中不可能囊括全部内容，但是我们力争让读者掌握开始使用WPF的一些基本知识。本书不仅有趣、富有教育性，而且能够为读者使用WindowsPresentationFoundation开发富用户界面打下坚实的基础。
本书读者对象
本书主要面向准备学习使用Microsoft新的呈现架构（presentationframework）WPF开发应用程序的.NETFramework开发人员。对于正在考虑使用新的ExpressionBlend系列设计工具的设计人员，以及那些想了解这些工具是如何加强与设计人员合作的开发人员，本书也是很有帮助的。对于没有.NET开发经验的程序员，本书在学习新的XAML语法上有一定的参考价值。但是对于这部分读者，书中的大部分内容比较高级，因此建议先学习.NET2.0，作为学习WPF的第一步。
本书适合以下几类读者：
●准备学习WPF新平台的Microsoft.NET应用程序开发人员。
●准备研究MicrosoftExpressionBlend工具，学习使用WPF及相关工具所提供的协作特性的设计人员。
此外，熟悉以下相关技术的人员，也很适合阅读学习本书：
●Microsoft.NETFramework
●C#
●Web服务
●HTML
●CSS
以上读者，对.NETFramework和C#有一个基本理解是必需的，而熟悉Web服务、HTML标记语言以及CSS概念对于学习本书中的内容有帮助，但不是必需的。对于没有.NETFramework和C#基础的开发人员，可先学习《.NETFramework2.0高级编程》和《C#2005高级编程（第4版）》（均由清华大学出版社引进并出版）这一类的书籍。
读者并不需要逐章学习本书。我们建议先学习第1章至第3章，对WPF和XAML有一个基本理解，然后浏览后面的几章，从中挑选出您感兴趣或需要的部分进行学习。
本书主要内容
本书主要介绍WPF开发技术、模式和案例。
本书以“WPF概述”作为开始。在第1章中，首先回答了“WPF是什么？”、“如何开始使用WPF？”以及“WPF能够带来什么？”等几个问题，然后详细分析了WPF开发平台提供的各个子系统及其图形特征。
概述WPF之后，将进入WPF开发技术部分。本书通过使用VisualStudio创建几个示例程序，带领您快速进入应用程序开发。此外，还将介绍XAML--创建用户界面的新标记语言。XAML实际上是独立于WPF的一项技术，但在WPF中广泛使用了XAML。
掌握了WPF的基本概念和开发技术之后，本书将带领读者进入设计工具的世界。Microsoft提供了许多引人注目的新的设计工具系列。在本书中将学习使用新的MicrosoftExpressionBlend工具。通过使用ExpressionBlend，可以创建高级的用户界面，学习实现样式、布局与动画。读者还将发现，将界面设计保存到XAML文件中，然后在VisualStudio中使用完全相同的标记语言编写应用程序逻辑是多么的容易。
接下来，将介绍如何使用WPF创建特殊效果，包括位图效果、变换，以及使用画刷对象创建玻璃或反射效果等。本书演示了这些技术，并为在应用程序中创建绚丽的可视化元素提供了基础。
在学习完特殊效果之后，将介绍如何使用WPF创建自定义控件。WPF提供了一个极好的自定义对象模型，允许运用各种风格和已存在的各种元素模板。该模型是一个令人满意的新模型，允许将几乎任何元素放置在另一个元素中。通过这个新功能，在整个创建自定义控件的过程中，都不会遇到问题。当然，任何事物都不是绝对的，使用WPF创建自定义控件，也有可能会遇到一些问题。本部分内容包括在什么情况下需要考虑创建自定义控件，以及如何创建自定义控件。
接下来，将进入WPF应用程序的企业应用开发部分。使用WPF可以创建两种风格的应用程序：基于Windows的单机运行的应用程序与基于Web的应用程序。这两种类型的程序基于相同的代码，即XAML与.NET。这意味着为应用程序指定目标主机环境，只需要简单改变工程文件的设置并管理这些配置即可。这项功能是非常强大的，在本书的企业开发主题中，对这一功能进行了全面介绍。
在理解了应用程序模型与配置之后，读者可能想了解安全问题。WPF的安全基于.NET2.0的CAS安全模型，与所选择的应用程序模型以及运行环境也有关。如果WPF程序运行于浏览器中，将涉及到Internet区域安全设置。本书将深入介绍这些内容。
在探讨了WPF应用程序开发、配置基础，并全面分析了WPF应用程序的安全之后，本书将进入一些高级主题。这些高级主题之一就是如何混合使用Win32与WPF代码。本书中将涉及互操作的相关问题。在Win32程序中使用WPF以及在WPF程序中使用Win32都是可行的，本书将介绍如何实现这一特征，从而可以使读者快速掌握如何将WPF用于Win32程序中。
本书最后深入研究了体系结构、WPF架构、XAML以及多线程问题。此外，还介绍了WindowsWorkflowFoundation（WF）与WindowsCommunicationFoundation（WCF），从而使读者可以熟悉.NETFramework3.0的其他组件。在理解了这些重要组件之后，读者还将学习如何构建一个简单的WCF服务与一个简单的WF工作流应用程序。
本书组织结构
本书先介绍了相关背景，包括Microsoft为什么以及怎样从长期以来使用的Win32平台转向WPF。然后，对WPF及其核心组件和子系统进行了概述，接下来介绍了ExpressionBlend工具的使用，并通过示例演示了如何创建富用户界面。后续几章具体针对与WPF开发相关的各个主题。在本书的最后简要介绍了与WPF平行的其他两个组件，这些组件共同构成了.NETFramework3.0这一重要而又强大的平台。
本书各章内容如下所示：
●第1章 WPF概述　　对于曾经开发过Windows应用程序的程序员而言，本书展示了开发Windows应用程序的一些精彩的新变化。此外，对曾经开发过Web应用程序的程序员来说，本书提供的开发方式更令人激动。　　Windows Presentation Foundation，也称做WPF，是下一代图形平台。基于该平台可以构建运行于Windows Vista之上的Windows应用程序和Web应用程序，Windows Vista是Microsoft最新发布的新一代操作系统。WPF为建立优雅的并且非常灵活的用户体验提供了基础，这种用户体验是通过同时使用用户界面、应用程序逻辑、文档以及多媒体实现的。　　注意：　　尽管WPF最初的目标是用于Windows Vista平台，但是作为.NET Framework 3.0（即以前的Win FX）的一部分，WPF也可以在Windows XP和Windows Server 2003平台上使用。　　通过使用XAML与Microsoft Expression Designers等工具，应用程序的界面和功能可以得到进一步加强，这些工具使设计人员和开发人员可以同时开发用户界面与应用程序逻辑，从而共同提供完美的用户体验。　　本章对WPF进行概述，包括以下内容：　　Windows API的演变。　　.NET Framework 3.0，基于Windows开发的下一代API。　　WPF体系结构与开发模型。　　XAML，支持WPF开发的声明式语言。　　开发WPF应用程序的相关工具。　　1.1 Windows API的简要历史　　Windows API为应用程序开发提供了Windows操作系统支持的核心功能，主要用于C/C++语言的开发，Windows API是应用程序和Windows之间最直接的交互机制。　　Windows API包含以下功能组合：　　基本服务——提供对计算机核心资源的访问，例如内存、文件系统、设备、处理器以及线程等。　　●第2章，“WPF与.NET编程”--本章首先介绍了构建与运行WPF应用程序的需求，然后是应用程序的各子系统，例如附属属性与事件传递系统。此外，还介绍了WPF提供的各种控件，以及如何使用平台提供的新结构修改和扩展这些控件。
●第3章，“WPF应用程序深入剖析”--本章介绍了在WPF中可以使用的各种应用程序模型，例如可以独立运行的与基于浏览器的应用程序。对相关程序文件及配置设置都进行了剖析，从而使读者可以快速理解并能开发WPF应用程序。
●第4章，“使用MicrosoftExpressionBlend构建富用户界面：第一部分”--本章介绍了WPF应用程序设计人员可以使用的新工具，重点介绍了MicrosoftExpressionBlend。在本章中读者可以了解到ExpressionBlend提供的设计环境，以及工程文件结构。本章内容还包括创建矢量图形、布局、动画和控件。
●第5章，“使用MicrosoftExpressionBlend构建富用户界面：第二部分”--本章在第4章介绍的相关内容的基础上，介绍了如何为程序添加交互功能以处理用户输入、事件与命中测试。本章还给出了一系列的动画示例程序，以及与WPF绘图相关的API。本章还演示了ExpressionBlend与VisualStudio2005提供的协作特性。
●第6章，“特殊效果”--本章探讨了WPF提供的丰富功能与特殊效果，包括画刷、位图效果以及变换等。有了这些功能，使用WPF可以很容易地快速创建富用户界面。
●第7章，“自定义控件”--本章专门讲解了在WPF中自定义控件的开发。通过模板与类型的扩展支持，在WPF中自定义控件所需做的工作是很少的。但是在很多情况下需要创建自定义控件。本章不仅介绍如何创建自定义控件，还介绍了如何确定是否使用模板与类型等内置功能的支持。这些内置功能是非常强大的。
●第8章，“WPF企业开发”--本章探讨了使用WPF开发企业级应用程序时需要考虑的许多问题。应用程序模型、配置、运行环境、安全考虑、导航、状态管理以及本地化等内容，在本章中都进行了探讨。
●第9章，“安全”--本章探讨了WPF的安全特性。WPF应用程序的安全主要与所选择的程序类型和运行环境有关。本章内容包括操作系统安全、CAS安全、Internet安全沙箱以及ClickOnce安全等。
●第10章，“WPF与Win32交互”--本章主要针对WPF应用程序与已存在的Win32应用程序之间的交互问题。本章将解答如何在Win32应用程序中使用WPF，以及如何在WPF应用程序中使用Win32等问题。通过学习本章，读者将了解到在WPF与Win32应用程序中HWND的区别。
●第11章，“高级开发主题”--本章将深入研究本书中涉及的有关问题。首先深入分析WPF体系结构，介绍WPF架构中重要的类，例如Application类、DependencyObject类。然后深入探讨XAML的语法与结构，以及WPF应用程序中的多线程问题。最后，深入分析了.NETFramework3.0的其他两个组件：WindowsWorkflowFoundation与WindowsCommunicationFoundation。
使用本书的条件
为了开发WPF应用程序，以及创建本书中的示例程序，必须首先安装以下软件：
●WindowsSDK
●.NETFramework3.0运行时组件
●带有OrcasCTPWinFX开发工具的VisualStudio2005或OrcasreleaseofVisualStudio2005
注意：
在本书第2章中将给出上述所需软件的更多细节，以及介绍如何获取这些必需的组件。