第1章 使用Windows Presentation Foundation(WPF)创建应用程序 1
1.1 WPF概述 1
1.1.1 什么是WPF 2
1.1.2 WPF体系结构 3
1.1.3 在WPF中定义用户界面 3
1.1.4 WPF的功能和特性 4
1.1.5 WPF应用程序的类型 5
1.2 创建简单的WPF应用程序 5
1.2.1 演示:使用Visual Studio 2008创建WPF应用程序 5
1.2.2 定义应用程序 6
1.2.3 定义窗口或者页面 6
1.2.4 添加控件 6
1.2.5 生成和运行WPF应用程序 7
1.3 处理事件和命令 7
1.3.1 WPF事件模型 7
1.3.2 处理WPF控件事件 7
1.3.3 什么是路由事件 8
1.3.4 定义路由事件 9
1.3.5 什么是命令 10
1.3.6 演示:定义命令 10
1.4 在页面间进行导航 11
1.4.1 WPF导航模型 11
1.4.2 演示:使用超链接导航页面 12
1.4.3 处理页面导航事件 12
1.4.4 使用导航服务维持状态 13
1.5 实验:创建WPF应用程序 14
1.5.1 实验1-1:创建一个独立WPF应用程序 14
1.5.2 实验1-2:处理事件和命令 18
1.5.3 实验1-3:在页面间进行导航 20
1.5.4 实验1-4:创建一个XBAP应用程序 24
1.6 习题 27
第2章 生成用户界面 33
2.1 定义页面布局 33
2.1.1 WPF页面布局模型 33
2.1.2 WPF布局类 34
2.1.3 演示:使用面板定义布局 35
2.1.4 演示:使用网格定义布局 35
2.2 使用内容控件生成用户界面 35
2.2.1 什么是内容控件 36
2.2.2 演示:使用内容控件生成用户界面 37
2.2.3 什么是Headered内容控件 37
2.2.4 演示:使用Headered内容控件创建用户界面 38
2.3 使用项控件生成用户界面 39
2.3.1 什么是项控件 39
2.3.2 处理项选择 40
2.3.3 演示:使用项控件创建用户界面 41
2.4 承载Windows窗体控件 41
2.4.1 为什么要在WPF中承载Windows窗体控件 41
2.4.2 在WPF应用程序中引用Windows窗体控件 42
2.4.3 在XAML中使用Windows窗体控件 42
2.4.4 与Windows窗体控件进行交互 43
2.5 实验:生成用户界面 44
2.5.1 实验2-1:定义页面布局和添加内容 44
2.5.2 实验2-2:使用项控件增强用户界面 46
2.5.3 实验2-3:集成Windows窗体控件 49
2.6 习题 51
第3章 自定义外观 54
3.1 在应用程序中共享逻辑资源 54
3.1.1 什么是资源 54
3.1.2 定义资源 54
3.1.3 在XAML中引用资源 55
3.1.4 以编程方式引用资源 57
3.1.5 跨应用程序重用资源 58
3.1.6 演示:在WPF应用程序中共享资源 59
3.1.7 定义本地化资源 59
3.2 使用样式创建一致的用户界面 60
3.2.1 什么是样式 60
3.2.2 定义样式 61
3.2.3 扩展样式 62
3.2.4 以编程方式设置样式 63
3.3 使用控件模板更改控件外观 64
3.3.1 什么是控件模板 64
3.3.2 为内容控件定义控件模板 64
3.3.3 为项控件定义控件模板 65
3.3.4 使用模板绑定提供用户定制 67
3.3.5 演示:使用控件模板更改控件外观 68
3.4 使用触发器和动画增强用户界面 68
3.4.1 什么是触发器 68
3.4.2 定义属性触发器 69
3.4.3 什么是动画 69
3.4.4 定义动画 70
3.4.5 演示:使用触发器和动画增强控件 72
3.5 实验:自定义WPF应用程序的外观 72
3.5.1 实验3-1:在应用程序中共享逻辑资源 72
3.5.2 实验3-2:使用样式创建一致的用户界面 74
3.5.3 实验3-3:使用控件模板更改控件外观 75
3.5.4 实验3-4:使用触发器和动画增强用户界面 77
3.6 习题 80
第4章 数据绑定 86
4.1 数据绑定概述 86
4.1.1 WPF数据绑定模型 86
4.1.2 绑定源和绑定目标 87
4.1.3 数据绑定模式 87
4.2 创建数据绑定 88
4.2.1 绑定到类属性 88
4.2.2 绑定多个控件到一个类中 90
4.2.3 绑定到整个对象 91
4.2.4 绑定到XML数据 91
4.2.5 绑定到另一个用户界面元素 93
4.2.6 演示:绑定到不同的数据源 94
4.3 实现属性更改通知 95
4.3.1 什么是属性更改通知 95
4.3.2 传递属性更改通知到绑定目标 96
4.3.3 传递值更改到绑定源 98
4.3.4 演示:触发源更新 99
4.4 转换数据 99
4.4.1 默认数据转换 99
4.4.2 实现一个自定义值转换器 100
4.5 验证数据 102
4.5.1 默认数据验证 102
4.5.2 提供视觉验证反馈 103
4.5.3 定义一个自定义验证规则 104
4.5.4 使用XAML指定验证规则 106
4.6 实验:实现数据绑定应用程序 106
4.6.1 实验4-1:创建数据绑定 106
4.6.2 实验4-2:实现属性更改通知 110
4.6.3 实验4-3:转换数据 115
4.6.4 实验4-4:验证数据 117
4.7 习题 120
第5章 数据绑定到集合 124
5.1 绑定到对象集合 124
5.1.1 绑定到集合概述 124
5.1.2 什么是Observable Collection 125
5.1.3 定义一个Observable Collection类 126
5.1.4 LINQ简介 128
5.1.5 绑定到ADO.NET数据对象 130
5.2 使用集合视图呈现数据 131
5.2.1 什么是集合视图 132
5.2.2 创建和使用集合视图 132
5.2.3 使用集合视图排列数据 133
5.2.4 使用集合视图筛选数据 133
5.2.5 使用集合视图分组数据 134
5.2.6 创建主从用户界面 135
5.3 使用数据模板呈现数据 135
5.3.1 什么是数据模板 136
5.3.2 定义和使用数据模板 136
5.3.3 定义数据模板为资源 137
5.3.4 使用数据模板中的数据触发器 138
5.4 实验:绑定用户界面元素到集合 139
5.4.1 实验5-1:使用集合视图呈现数据 139
5.4.2 实验5-2:使用数据模板呈现数据 145
5.5 习题 146
第6章 创建新控件 153
6.1 控件创作概述 153
6.1.1 为什么要创建新控件 153
6.1.2 创建新控件的选项 154
6.1.3 用户控件 154
6.1.4 自定义控件 155
6.1.5 FrameworkElement派生控件 155
6.2 创建控件 156
6.2.1 创建用户控件 156
6.2.2 实现属性和事件 159
6.2.3 创建自定义控件 162
6.2.4 实现命令 163
6.2.5 使用主题增强控件 167
6.2.6 演示:实现一个NumericUpDown控件 168
6.3 实验:使用自定义控件增强用户界面 168
6.3.1 实验6-1:实现一个自定义控件 168
6.4 习题 172
第7章 管理文档 176
7.1 创建和查看流文档 176
7.1.1 什么是流文档 176
7.1.2 定义一个流文档 177
7.1.3 流文档容器类型 177
7.1.4 演示:定义FlowDocument容器 178
7.1.5 有关流的控件 178
7.1.6 自定义文本 179
7.1.7 演示:自定义FlowDocument中的文本 180
7.2 创建和查看固定文档 180
7.2.1 什么是固定文档 181
7.2.2 定义固定文档 181
7.2.3 定义一个固定文档查看器 182
7.2.4 演示:在XAML中创建一个FixedDocument 182
7.3 打包文档 183
7.3.1 打包文档的支持 183
7.3.2 打包文档部件为ZIP文件 183
7.3.3 数字签名内容 185
7.3.4 包和部件与信息之间的关联 186
7.3.5 演示:创建一个数字签名ZipPackage 187
7.4 打印文档 187
7.4.1 什么是XML纸张规范 187
7.4.2 演示:打印文档 187
7.4.3 控制打印任务 188
7.4.4 管理打印队列 189
7.5 实验:管理文档 191
7.5.1 实验7-1:创建和显示流文档 191
7.5.2 实验7-2:打印文档 194
7.5.3 实验7-3:创建和签名XPS文档 195
7.6 习题 196
第8章 图形和多媒体 203
8.1 创建2D图形 203
8.1.1 WPF中的2D图形支持 203
8.1.2 绘制形状 204
8.1.3 什么是路径和几何图形 204
8.1.4 演示:填充形状和几何图形 205
8.1.5 演示:使用和动画化转换 205
8.2 显示图像 205
8.2.1 WPF图像处理组件 205
8.2.2 演示:在WPF中显示图像 206
8.2.3 编码和解码图像 207
8.2.4 旋转、转换和裁切图像 208
8.3 创建3D图形 209
8.3.1 2D与3D的区别 209
8.3.2 WPF中的3D图形支持 210
8.3.3 什么是Viewport3D 210
8.3.4 Viewport3D的照相机类型 211
8.3.5 创建模型 212
8.3.6 演示:呈现3D内容 213
8.4 操作3D环境 213
8.4.1 为3D模型指定材料 213
8.4.2 为3D模型指定光 214
8.4.3 演示:转换3D模型 214
8.4.4 演示:3D模型动画制作 215
8.5 添加多媒体 215
8.5.1 WPF对多媒体的支持 215
8.5.2 媒体播放模式 215
8.5.3 使用MediaElement显示媒体 216
8.5.4 控制MediaElement的操作 216
8.5.5 使用MediaPlayer播放媒体 216
8.6 实验:图形和多媒体 217
8.6.1 实验8-1:显示2D图形 218
8.6.2 实验8-2:显示图像 219
8.6.3 实验8-3:显示3D图形 220
8.6.4 实验8-4:播放视频剪辑 221
8.7 习题 223
第9章 在WPF中配置和部署应用程序 227
9.1 部署选项 227
9.1.1 部署技术 227
9.1.2 完全信任和部分信任应用程序 228
9.1.3 部分信任中可用的WPF功能 228
9.1.4 部分信任中不可用的WPF功能 228
9.1.5 本地Intranet上的XBAP应用程序 229
9.2 部署独立的WPF应用程序 230
9.2.1 使用Windows Installer部署一个独立的应用程序 230
9.2.2 使用ClickOnce部署一个独立的应用程序 230
9.2.3 安装.NET Framework 231
9.3 部署XBAP应用程序 232
9.3.1 必须部署的XBAP文件 232
9.3.2 什么是清单文件 232
9.3.3 发布一个XBAP应用程序到Web服务器 233
9.3.4 安装一个XBAP应用程序到客户端计算机 233
9.4 配置清单设置 234
9.4.1 使用清单生成和编辑工具 234
9.4.2 Mage.exe命令 234
9.4.3 为新建和更新文件设置选项 235
9.4.4 为签名文件设置选项 235
9.5 实验:配置和部署WPF应用程序 236
9.5.1 实验9-1:部署一个独立的WPF应用程序 236
9.5.2 实验9-2:更新一个部署清单 239
9.5.3 实验9-3:部署一个XBAP应用程序 240
9.6 习题 242