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.1WindowsAPI的简要历史 1
1.1.1平台演化 2
1.1.2.NETFramework3.0介绍 2
1.2初识WindowsPresentationFoundation 3
1.2.1设计指导原则 3
1.2.2WPF体系结构 5
1.3XAML 13
1.4可视化设计工具 16
1.4.1XamlPad 16
1.4.2MicrosoftExpressionBlend 17
1.4.3WPF可视化设计器 18
1.4.4ElectricRainZAM3D 19
1.4.5MobiformAurora 19
1.5小结 20
第2章WPF与.NET编程 23
2.1开始 23
2.1.1需要安装的软件 24
2.1.2WPF应用程序类型 24
2.1.3第一个WPF应用程序 25
2.2WPF开发概念 27
2.2.1XAML 27
2.2.2Application对象 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.1App.Manifest 61
3.1.2AssemblyInfo.cs 61
3.1.3Resources.resx 63
3.1.4Settings.settings 63
3.1.5MyApp.xaml 65
3.2.NETFramework3.0Windows应用程序 66
3.3XAML浏览器应用程序 68
3.4WCF服务库 70
3.5WPF自定义控件库 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.1ExpressionBlend工作流 105
5.2处理用户输入 108
5.2.1键盘和鼠标类 108
5.2.2事件与事件处理 108
5.2.3定位 110
5.2.4命中测试 114
5.3WPF动画API 124
5.3.1动画类 124
5.3.2使用代码通过编程创建动态动画 124
5.3.3程序动画 127
5.4使用故事板进行交互 132
5.5WPF绘图API 134
5.5.1Geometry类 134
5.5.2Shape类 134
5.5.3画刷 138
5.6小结 141
第6章特殊效果 143
6.1画刷 144
6.1.1SolidColorBrash 144
6.1.2GradientBrush 150
6.1.3ImageBrush 153
6.1.4DrawingBrush 155
6.1.5VisualBrush 156
6.2位图效果 158
6.3变换 163
6.3.1TranslateTransform类 165
6.3.2ScaleTransform类 168
6.3.3SkewTransform类 171
6.3.4RotateTransform类 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.1UserControl类 193
7.2.2创建用户控件 193
7.3WPF中的数据绑定 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.1WPF应用程序模型 218
8.1.1单机应用程序 219
8.1.2基于浏览器的应用程序 221
8.1.3安全考虑 230
8.2状态管理 231
8.2.1Application对象 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.5WPF部署模型 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.1WPF安全模型 281
9.2受信任的应用程序与Express应用程序 282
9.3核心操作系统安全性 282
9.3.1LUA 282
9.3.2虚拟化 283
9.3.3沙箱 283
9.3.4下一代密码 283
9.4CLR安全性 284
9.4.1代码访问安全性 284
9.4.2临界代码方法 291
9.4.3验证 292
9.5MicrosoftInternetExplorer的安全性 293
9.5.1区域限制 293
9.5.2XBAP沙箱工作区 294
9.5.3XAML浏览器应用程序的安全性 294
9.6ClickOnce安全性 301
9.6.1受信任的发布者 301
9.6.2个人证书文件 302
9.7.NET3.0安全性实用程序 305
9.8小结 305
第10章WPF与Win32交互 307
10.1Win32用户界面概述 307
10.2WPF和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.1WPF体系结构 330
11.1.1核心子系统 331
11.1.2WPF线程模型 334
11.1.3桌面窗口管理器 335
11.2WPF框架 336
11.2.1Dispatcher对象 337
11.2.2DependencyObject/DependencyProperty类 337
11.2.3Application类 338
11.2.4Freezable类 339
11.2.5Visual类 339
11.2.6UIElement类 345
11.2.7FrameworkElement类 345
11.2.8Control类 346
11.3XAML深入分析 347
11.3.1XAML的后台工作 348
11.3.2动态操作XAML 352
11.3.3解析Window1.xaml 356
11.3.4XAML标记扩展 360
11.3.5XAML与自定义类型 360
11.4WPF多线程 362
11.4.1单线程应用程序模型 363
11.4.2线程关联度与DispatcherObject 363
11.4.3WPF分发器 364
11.4.4使用单线程应用程序 365
11.4.5异步线程 367
11.5Windows通信基础WCF 372
11.5.1服务定向 372
11.5.2WCF体系结构 373
11.5.3WCF基础 374
11.5.4构建一个WCF服务 376
11.6Windows工作流基础 383
11.6.1工作流定义 384
11.6.2WF体系结构 384
11.6.3WF基础 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概述”--本章探讨了近年来WindowsAPI的演化,以及这种演化如何为WPF这一新平台铺平了道路。然后,从整体上介绍了WPF的体系结构,包括新的图形功能以及各个子系统,还介绍了相关的开发工具。
●第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章中将给出上述所需软件的更多细节,以及介绍如何获取这些必需的组件。