WPF高级编程
作者:(美国)(Andrade.C.)安德拉德 等著;王德才、吴明飞 译
出版时间:2008
内容简介
《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程序中。
目录
第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