第1章 导言 1
1.1 WPF——全新的GUI 1
1.1.1 Charles Petzold时代的User32 1
1.1.2 HTML(即所谓的Web) 5
1.2 初看XAML编程模型 8
1.3 WPF概览 12
1.3.1 准备和运行 13
1.3.2 转到标记 14
1.3.3 基础 16
1.3.4 处理数据 20
1.3.5 一体化的力量 22
1.3.6 设置一些样式 28
1.4 创建应用程序的工具 31
1.5 小结 31
第2章 应用程序 32
2.1 应用程序原则 32
2.1.1 可伸缩的应用程序 32
2.1.2 Web风格 35
2.1.3 桌面风格 37
2.2 应用程序 38
2.2.1 定义 39
2.2.2 生存期 41
2.2.3 错误处理 42
2.2.4 管理状态 44
2.3 资源和配置 45
2.3.1 配置状态 45
2.3.2 内容状态 48
2.3.3 文档状态 53
2.4 窗口 53
2.4.1 显示窗口 55
2.4.2 大小和位置 58
2.4.3 窗口和应用程序 59
2.5 用户控件 60
2.6 导航和页面 62
2.6.1 在页面之间传递状态 66
2.6.2 控制导航 70
2.6.3 控制日志 72
2.6.4 功能性导航和页面功能 73
2.7 在浏览器中托管应用程序 78
2.7.1 HelloBrowser 79
2.7.2 表面之下 82
2.7.3 松散标记 84
2.8 小结 84
第3章 控件 86
3.1 控件原则 86
3.1.1 内容模型 88
3.1.2 模板 93
3.2 控件库 98
3.2.1 按钮 98
3.2.2 列表 99
3.2.3 菜单和工具栏 105
3.2.4 容器控件 108
3.2.5 范围控件 109
3.2.6 编辑器 110
3.2.7 文档查看器 120
3.2.8 帧 121
3.3 构建部件 122
3.3.1 工具提示 122
3.3.2 拖动标 123
3.3.3 边框 125
3.3.4 弹出框 126
3.3.5 滚动查看器 127
3.3.6 视图框 129
3.4 小结 129
第4章 布局 130
4.1 布局原则 130
4.1.1 布局契约 131
4.1.2 一致的布局 132
4.1.3 没有内置的布局 139
4.2 布局库 140
4.2.1 画布 140
4.2.2 StackPanel 142
4.2.3 DockPanel 143
4.2.4 WrapPanel 145
4.2.5 UniformGrid 146
4.3 Grid 147
4.3.1 Grid的概念 147
4.3.2 Grid的布局过程 152
4.3.3 GridSplitter 154
4.4 编写自定义布局 155
4.5 小结 161
第5章 可视化效果 162
5.1 2D图形 162
5.1.1 2D图形的原则 163
5.1.2 几何图形 165
5.1.3 颜色 167
5.1.4 笔刷 169
5.1.5 画笔 173
5.1.6 图画(绘制) 175
5.1.7 形状 177
5.1.8 图像 178
5.1.9 不透明性 184
5.1.10 BitmapEffects 186
5.2 3D图形 187
5.2.1 3D风格的Hello World 187
5.2.2 3D原则 190
5.3 文档和文本 196
5.3.1 文本风格的Hello World 196
5.3.2 字体 200
5.3.3 文本布局 201
5.3.4 高级版式 206
5.4 动画 207
5.4.1 动画就是新的计时器 207
5.4.2 时间和时间线 216
5.4.3 定义动画 216
5.4.4 动画集成 219
5.5 媒体 222
5.5.1 音频 223
5.5.2 视频 225
5.6 小结 226
第6章 数据 227
6.1 数据原则 227
6.1.1 .NET数据模型 227
6.1.2 无处不在的绑定 228
6.1.3 数据转换 228
6.2 资源 229
6.3 绑定基础 234
6.4 绑定到CLR对象 237
6.5 绑定到XML 244
6.5.1 XPath 101 245
6.5.2 XML绑定 247
6.6 数据模板 250
6.7 高级绑定 254
6.7.1 层级绑定 254
6.7.2 集合视图 258
6.8 数据驱动显示 264
6.9 小结 268
第7章 动作 269
7.1 动作原则 269
7.1.1 元素合成 269
7.1.2 松散耦合 270
7.1.3 声明式动作 271
7.2 事件 272
7.3 命令 275
7.4 触发器 283
7.4.1 添加触发器到数据中 283
7.4.2 添加触发器到控件中 286
7.4.3 把触发器当作新的“if”语句 287
7.5 小结 288
第8章 样式 289
8.1 样式原则 289
8.1.1 元素合成 290
8.1.2 定制化的统一模型 291
8.1.3 针对工具进行优化 293
8.2 开始使用样式 294
8.2.1 模型、显示和样式 297
8.2.2 主题 300
8.2.3 换肤 303
8.2.4 样式继承 306
8.3 正确地使用样式 309
8.3.1 构建主题而非样式 309
8.3.2 一致性才是王道 310
8.3.3 找到一个正确的着眼点 311
8.4 小结 311
附录A 基础服务 312
A.1 线程和调度器 312
A.2 属性 316
A.2.1 .NET属性 317
A.2.2 属性系统101 321
A.2.3 元数据 323
A.3 键盘、鼠标和触摸笔 326
A.3.1 InputBinding 326
A.3.2 输入设备通信 329
A.3.3 键盘焦点 330
A.4 小结 330