内容简介
第1章WPF概述
1.1 Windows图形演化
1.1.1 DirectX:新的图形引擎
1.1.2硬件加速与WPF
1.2 WPF:高级API
1.2.1 Windows窗体将继续保留
1.2.2 DirectX也将继续保留
1.2.3 Silverlight
1.3分辨率无关性
1.3.1 WPF单位
1.3.2系统DPI
1.3.3位图和矢量图形
1.4 WPF体系结构
1.5 WPF4
1.5.1新特性
1.5.2 WPF工具包
1.5.3 Visual Studio 2010
1.6小结
第2章XAML
2.1理解XAML
2.1.1 WPF之前的图形用户界面
2.1.2 XAML变体
2.1.3 XAML编译
2.2 XAML基础
2.2.1 XAML名称空间
2.2.2代码隐藏类
2.3 XAML中的属性和事件
2.3.1简单属性与类型转换器
2.3.2复杂属性
2.3.3标记扩展
2.3.4附加属性
2.3.5嵌套元素
2.3.6特殊字符与空白
2.3.7事件
2.3.8完整的Eight Ball示例
2.4使用其他名称空间中的类型
2.5加载和编译XAML
2.5.1只使用代码
2.5.2使用代码和未经编译的XAML
2.5.3使用代码和编译过的XAML
2.5.4只使用XAML
2.6 XAML 2009
2.6.1自动事件连接
2.6.2引用
2.6.3内置类型
2.6.4高级的对象创建
2.7小结
第3章 布局
3.1理解WPF中的布局
3.1.1 WPF布局原则
3.1.2布局过程
3.1.3布局容器
3.2使用StackPanel面板进行简单布局
3.2.1布局属性
3.2.2对齐方式
3.2.3边距
3.2.4最小尺寸、最大尺寸以及显式地设置尺寸
3.2.5 Border控件
3.3 WrapPanel面板和DockPanel面板
3.3.1 WrapPanel面板
3.3.2 DockPanel面板
3.3.3嵌套布局容器
3.4 Grid面板
3.4.1调整行和列
3.4.2布局舍入
3.4.3跨越行和列
3.4.4分割窗口
3.4.5共享尺寸组
3.4.6 UniformGrid面板
3.5使用Canvas面板进行基于坐标的布局
3.5.1 Z顺序
3.5.2 1nkCanvas元素
3.6布局示例
3.6.1列设置
3.6.2动态内容
3.6.3组合式用户界面
3.7小结
第4章 依赖项属性
4.1理解依赖项属性
4.1.1定义依赖项属性
4.1.2注册依赖项属性
4.1.3添加属性包装器
4.1.4 WPF使用依赖项属性的方式
4.1.5共享的依赖项属性
4.1.6附加的依赖项属性
4.2属性验证
4.2.1验证回调
4.2.2强制回调
4.3小结
第5章 路由事件
5.1理解路由事件
5.1.1定义、注册和包装路由事件
5.1.2共享路由事件
5.1.3引发路由事件
5.1.4处理路由事件
5.2事件路由
5.2.1 RoutedEventArgs类
5.2.2冒泡路由事件
5.2.3处理挂起的事件
5.2.4附加事件
5.2.5隧道路由事件
5.3 WPF事件
5.3.1生命周期事件
5.3.2输入事件
5.4键盘输入
5.4.1处理按键事件
5.4.2焦点
5.4.3获取键盘状态
5.5鼠标输入
5.5.1鼠标单击
5.5.2捕获鼠标
5.5.3鼠标拖放
5.6多点触控输入
5.6.1多点触控的输入层次
5.6.2原始触控
5.6.3操作
5.6.4惯性
5.7小结
第6章 控件
6.1控件类
6.1.1背景画刷和前景画刷
6.1.2字体
6.1.3鼠标光标
6.2内容控件
6.2.1 Content属性
6.2.2对齐内容
6.2.3 WPF内容原则
6.2.4标签
6.2.5按钮
6.2.6工具提示
6.3特殊容器控件
6.4带标题的内容控件
6.4.1 GroupBox
6.4.2 Tabltem
6.4.3 Expander
6.5文本控件
6.5.1多行文本
6.5.2选择文本
6.5.3拼写检查
6.5.4 PasswordBox
6.6 列表控件
6.6.1 ListBox
6.6.2 ComboBox
6.7基于范围的控件
6.7.1 Slider控件
6.7.2进度条
6.8日期控件
6.9小结
第7章Application类
7.1应用程序的生命周期
7.1.1创建Application对象
7.1.2派生一个自定义的Application类
7.1.3应用程序的关闭方式
7.1.4应用程序事件
7.2 Application类的任务
7.2.1显示初始界面
7.2.2处理命令行参数
7.2.3访问当前Application对象
7.2.4在窗口之间进行交互
7.2.5单实例应用程序
7.3程序集资源
7.3.1添加资源
7.3.2检索资源
7.3.3 pack URI
7.3.4内容文件
7.4本地化
7.4.1构建能够本地化的用户界面
7.4.2使应用程序为本地化做好准备
7.4.3翻译过程
7.5小结
第8章 元素绑定
8.1将元素绑定到一起
8.1.1绑定表达式
8.1.2绑定错误
8.1.3绑定模式
8.1.4使用代码创建绑定
8.1.5多绑定
8.1.6绑定更新
8.2绑定到非元素对象
8.2.1 Source属性
8.2.2 RelativeSource属性
8.2.3 DataContext属性
8.3小结
第9章 命令
9.1理解命令
9.2 WPF命令模型
9.2.1 lCommand接口
9.2.2 RoutedCommand类
9.2.3 RoutedUlCommand类
9.2.4命令库
9.3执行命令
9.3.1命令源
9.3.2命令绑定
9.3.3使用多命令源
9.3.4微调命令文本
9.3.5直接调用命令
9.3.6禁用命令
9.3.7具有内置命令的控件
9.4高级命令
9.4.1自定义命令
9.4.2在不同的位置使用相同的命令
9.4.3使用命令参数
9.4.4跟踪和翻转命令
9.5小结
第10章 资源
10.1资源基础
10.1.1资源集合
10.1.2资源的层次
10.1.3静态资源和动态资源
10.1.4非共享资源
10.1.5通过代码访问资源
10.1.6应用程序资源
10.1.7系统资源
10.2资源字典
10.2.1创建资源字典
10.2.2使用资源字典
10.2.3在程序集之间共享资源
10.3小结
第11章 样式和行为
11.1样式基础
11.1.1创建样式对象
11.1.2设置属性
11.1.3关联事件处理程序
11.1.4多层样式
11.1.5通过类型自动应用样式
11.2触发器
11.2.1简单触发器
11.2.2事件触发器
11.3行为
11.3.1获取行为支持
11.3.2理解行为模型
11.3.3创建行为
11.3.4使用行为
11.3.5 Blend中的设计时行为支持
11.4小结
第12章 形状、画刷和变换
12.1理解形状
12.1.1 Shape类
12.1.2矩形和椭圆
12.1.3改变形状的尺寸和放置形状
12.1.4使用Viewbox控件缩放形状
12.1.5直线
12.1.6折线
12.1.7多边形
12.1.8直线线帽和直线交点
12.1.9点划线
12.1.10像素对齐
12.2画刷
12.2.1 SolidColorBsh画刷
12.2.2 LinearGradientBsh画刷
12.2.3 RadialGradientBsh画刷
12.2.4 ImageBsh画刷
12.2.5平铺的ImageBsh画刷
12.2.6 VisualBrush画刷
12.2.7 BitmapCacheBrush画刷
12.3变换
12.3.1变换形状
12.3.2变换元素
12.4透明
12.4.1使用元素半透明
12.4.2透明掩码
12.5小结
第13章 几何图形和图画
13.1路径和几何图形
13.1.1直线、矩形和椭圆图形
13.1.2使用GeometGroup组合形状
13.1.3使用CombinedGeomet融合几何图形
13.1.4使用PathGeomet绘制曲线和直线
13.1.5微语言几何图形
13.1.6使用几何图形进行剪裁
13.2图画
13.2.1显示图画
13.2.2导出插图
13.3小结
第14章 效果和可视化对象
14.1可视化对象
14.1.1绘制可视化对象
14.1.2在元素中包装可视化对象
14.1.3命中测试
14.1.4复杂的命中测试
14.2效果
14.2.1 BlurEect类
14.2.2 DropShadowEect类
14.2.3 ShaderEect类
14.3 WteableBitmap类
14.3.1生成位图
14.3.2写入WriteableBitmap对象
14.3.3更高效的像素写入
14.4小结
第15章 动画基础
15.1理解WPF动画
15.1.1基于时间的动画
15.1.2基于属性的动画
15.2基本动画
15.2.1 Animation类
15.2.2使用代码创建动画
15.2.3同时发生的动画
15.2.4动画生命期
15.2.5 Timeline类
15.3故事板
15.3.1故事板
15.3.2事件触发器
15.3.3重叠动画
15.3.4同步的动画
15.3.5控制播放
15.3.6监视动画进度
15.4动画缓动
15.4.1使用缓动函数
15.4.2在动画开始时应用缓动与在动画结束时应用缓动
15.4.3缓动函数类
15.4.4创建自定义缓动函数
15.5动画性能
15.5.1期望的帧速率
15.5.2位图缓存
15.6小结
第16章 高级动画
16.1动画类型回顾
16.1.1动态变换
16.1.2动态改变画刷
16.1.3动态改变像素着色器
16.2关键帧动画
16.2.1离散的关键帧动画
16.2.2缓动关键帧
16.2.3样条关键帧动画
16.3基于路径的动画
16.4基于帧的动画
16.5使用代码创建故事板
16.5.1主窗口
16.5.2 Bomb用户控件
16.5.3投炸弹
16.5.4拦截炸弹
16.5.5统计炸弹和清理工作
16.6小结
第17章 控件模板
17.1理解逻辑树和可视化树
17.2理解模板
17.2.1修饰类
17.2.2剖析控件
17.3创建控件模板
17.3.1简单按钮
17.3.2模板绑定
17.3.3改变属性的触发器
17.3.4使用动画的触发器
17.4组织模板资源
17.4.1分解按钮控件模板
17.4.2通过样式应用模板
17.4.3自动应用模板
17.4.4由用户选择的皮肤
17.5构建更复杂的模板
17.5.1嵌套的模板
17.5.2修改滚动条
17.5.3控件模板示例
17.6可视化状态
17.7小结
第18章 自定义元素
18.1理解WPF中的自定义元素
18.2构建基本的用户控件
18.2.1定义依赖项属性
18.2.2定义路由事件
18.2.3添加标记
18.2.4使用控件
18.2.5命令支持
18.2.6深入分析用户控件
18.3创建无外观控件
18.3.1修改颜色拾取器的代码
18.3.2修改颜色拾取器的标记
18.3.3精简控件模板
18.3.4特定主题样式和默认样式
18.4支持可视化状态
18.4.1开始编写FlipPanel类
18.4.2选择部件和状态
18.4.3默认控件模板
18.4.4 使用FlipPanel
18.4.5使用不同的控件模板
18.5自定义面板
18.5.1两步布局过程
18.5.2 Canvas面板克隆
18.5.3更好的换行面板
18.6自定义绘图元素
18.6.1 OnRender()方法
18.6.2评估自定义绘图
18.6.3自定义绘图元素
18.6.4自定义装饰元素
18.7小结
第19章 数据绑定
19.1使用自定义对象绑定到数据库
19.1.1构建数据访问组件
19.1.2构建数据对象
19.1.3显示绑定对象
19.1.4更新数据库
19.1.5更改通知
19.2绑定到对象集合
19.2.1显示和编辑集合项
19.2.2插入和移除集合项
19.2.3绑定到ADONET对象
19.2.4绑定到LINQ表达式
19.3提高大列表的性能
19.3.1虚拟化
19.3.2项目容器再循环
19.3.3延迟滚动
19.4验证
19.4.1在数据对象中进行验证
19.4.2自定义验证规则
19.4.3响应验证错误
19.4.4获取错误列表
19.4.5显示不同的错误指示符号
19.4.6验证多个值
19.5数据提供者
19.5.1 ObjectDataProvider
19.5.2 XmlDataProvider
19.6小结
第20章 格式化绑定的数据
20.1数据绑定回顾
20.2数据转换
20.2.1 StringFormat属性
20.2.2值转换器简介
20.2.3使用值转换器设置字符串的格式
20.2.4使用值转换器创建对象
20.2.5应用条件格式化
20.2.6评估多个属性
20.3列表控件
20.4列表样式
20.4.1 ItemContainerSle
20.4.2包含复选框或单选按钮的ListBox控件
20.4.3交替条目样式
20.4.4样式选择器
20.5数据模板
20.5.1分离和重用模板
20.5.2更高级的模板
20.5.3改变模板
20.5.4模板选择器
20.5.5模板与选择
20.5.6改变条目布局
20.6 ComboBox控件
20.7小结
第21章 数据视图
21.1 View对象
21.1.1检索视图对象
21.1.2视图导航
21.1.3以声明方式创建视图
21.2过滤、排序与分组
21.2.1过滤集合
21.2.2过滤DataTable对象
21.2.3排序
21.2.4分组
21.3小结
第22章 列表、网格和树
22.1 ListView控件
22.1.1使用GirdView创建列
22.1.2创建自定义视图
22.2 TreeView
22.2.1使用数据绑定的TreeView
22.2.2将DataSet对象绑定到TreeView
22.2.3即时创建节点
22.3 DataGrid
22.3.1改变列的尺寸与重新安排列
22.3.2定义列
22.3.3设置列的格式和样式
22.3.4设置行的格式
22.3.5行细节
22.3.6冻结列
22.3.7选择
22.3.8排序
22.3.9 DateGrid编辑
22.4小结
第23章 窗口
23.1 Window类
23.1.1显示窗口
23.1.2定位窗口
23.1.3保存和还原窗口位置
23.2窗口交互
23.2.1窗口所有权
23.2.2对话框模型
23.2.3通用对话框
23.3非矩形窗口
23.3.1简单形状窗口
23.3.2具有形状内容的透明窗口
23.3.3移动形状窗口
23.3.4改变形状窗口的尺寸
23.3.5组合到一起:窗口的自定义控件模板
23.4 Aero玻璃效果
23.5 Windows7任务栏编程
23.5.1使用跳转列表
23.5.2改变任务栏图标和预览
23.6小结
第24章 页面和导航
24.1理解基于页面的导航
24.2基于页面的界面
24.2.1一个具有导航窗口的基于页面的简单应用程序
24.2.2 Page类
24.2.3超链接
24.2.4在一个框架中驻留页面
24.2.5在另一个页面中驻留页面
24.2.6在Web浏览器中驻留页面
24.3页面历史
24.3.1深入分析WPF中的URI
24.3.2导航历史
24.3.3维护自定义的属性
24.4导航服务
24.4.1通过编程进行导航
24.4.2导航事件
24.4.3管理日志
24.4.4向日志添加自定义项
24.4.5页函数
24.5 XAML浏览器应用程序
24.5.1 XBAP的运行要求
24.5.2创建XBAP
24.5.3部署XBAP
24.5.4更新XBAP
24.5.5 XBAP的安全性
24.5.6完全信任的XBAP
24.5.7组合XBAP/独立应用程序
24.5.8为不同的安全级别编写代码
24.5.9在网页中嵌入XBAP
24.6 WebBrowser控件
24.6.1导航到页面
24.6.2构建DOM树
24.6.3使用NET代码为网页添加脚本
24.7小结
第25章 菜单、工具栏和功能区
25.1菜单
25.1.1 Menu类
25.1.2菜单项
25.1.3 ContextMenu类
25.1.4菜单分隔条
25.2工具栏和状态栏
25.2.1 ToolBar控件
25.2.2 StatusBar控件
25.3功能区
25.3.1添加功能区
25.3.2设置功能区样式
25.3.3命令
25.3.4应用程序菜单
25.3.5选项卡、组与按钮
25.3.6改变功能区尺寸
25.3.7快速访问工具栏
25.4小结
第26章 声音和视频
26.1播放WAV音频
26.1.1 SoundPlayer类
26.1.2 SoundPlayerAction类
26.1.3系统声音
26.2 MediaPlayer类
26.3 MediaElement类
26.3.1使用代码播放音频
26.3.2处理错误
26.3.3使用触发器播放音频
26.3.4播放多个声音
26.3.5改变音量、平衡、速度以及位置
26.3.6将动画同步到音频
26.3.7播放视频
26.3.8视频效果
26.4语音
26.4.1语音合成
26.4.2语音识别
26.5小结
第27章3D绘图
27.1 3D绘图基础
27.1.1视口
27.1.2 3D对象
27.1.3摄像机
27.2深入研究3D绘图
27.2.1着色和法线
27.2.2更复杂的形状
27.2.3 Model3DGroup集合
27.2.4使用材质
27.2.5纹理映射
27.3交互和动画
27.3.1变换
27.3.2旋转
27.3.3飞过
27.3.4跟踪球
27.3.5命中测试
27.3.6 3D表面上的2D元素
27.4小结
第28章 文档
28.1理解文档
28.2流文档
28.2.1流内容元素
28.2.2设置内容元素的格式
28.2.3创建简单的流文档
28.2.4块元素
28.2.5内联元素
28.2.6通过代码与元素进行交互
28.2.7文本对齐
28.3只读流文档容器
28.3.1缩放
28.3.2页面和列
28.3.3从文件加载文档
28.3.4打印
28.4编辑流文档
28.4.1加载文件
28.4.2保存文件
28.4.3设置所选文本的格式
28.4.4获取单个单词
28.5固定文档
28.6批注
28.6.1批注类
28.6.2启用批注服务
28.6.3创建批注
28.6.4检查批注
28.6.5响应批注更改
28.6.6在固定文档中保存批注
28.6.7自定义便笺外观
28.7小结
第29章 打印
29.1基本打印
29.1.1打印元素
29.1.2变换打印输出
29.1.3打印不显示的元素
29.1.4打印文档
29.1.5在文档打印输出中控制页面
29.2自定义打印
29.2.1使用可视化层中的类进行打印
29.2.2自定义多页打印
29.3打印设置和管理
29.3.1保存打印设置
29.3.2打印页面范围
29.3.3管理打印队列
29.4通过XPS进行打印
29.4.1为打印预览创建XPS文档
29.4.2写入内存中的XPS文档
29.4.3通过XPS直接打印到打印机
29.4.4异步打印
29.5小结
第30章与Windows窗体的交互
30.1访问互操作性
30.2混合窗口和窗体
30.2.1为WPF应用程序添加窗体
30.2.2为Windows窗体应用程序添加WPF窗口
30.2.3显示模态窗口和窗体
30.2.4显示非模态窗口和窗体
30.2.5 Windows窗体控件的可视化风格
30.2.6不需要互操作性的Windows窗体类
30.3创建具有混合内容的窗口
30.3.1 WPF和Windows窗体“空域”
30.3.2在WPF中驻留Windows窗体控件
30.3.3 WPF和Windows窗体用户控件
30.3.4在Windows窗体中驻留WPF控件
30.3.5访问键、助记码和焦点
30.3.6属性映射
30.4小结
第31章 多线程
31.1多线程
31.1.1 Dispatcher类
31.1.2 DispatcherObject类
31.1.3 BackgroundWorker类
31.2小结
第32章 插件模型
32.1在MAF和MEF两者间进行选择
32.2插件管道
32.2.1管道的工作原理
32.2.2插件文件夹结构
32.2.3为使用插件模型准备解决方案
32.3使用插件的应用程序
32.3.1协定
32.3.2插件视图
32.3.3插件
32.3.4插件适配器
32.3.5宿主视图
32.3.6宿主适配器
32.3.7宿主
32.3.8添加更多插件
32.4与宿主进行交互
32.5可视化插件
32.6小结
第33章ClickOnce部署
33.1理解应用程序部署
33.1.1 ClickOnce安装模型
33.1.2 ClickOnce的局限
33.2简单的C1ickOnce发布
33.2.1设置发布者和产品
33.2.2启动发布向导
33.2.3部署文件的结构
33.2.4安装ClickOnce应用程序
33.2.5更新ClickOnce应用程序
33.3 C1ickOnce附加选项
33.3.1发布版本
33.3.2更新
33.3.3文件关联
33.3.4发布选项
33.4小结