WPF专业编程指南
WPF专业编程指南
![](http://space.itpub.net/attachments/2010/01/16566727_201001131017321.jpg)
定价 : ¥68.00 会员价 : ¥51.00(75折) 校园优惠价 :¥51(75折)
本书样章免费试读:http://www.china-pub.com/196280
作者: 李应保 [作译者介绍]
出版社:电子工业出版社
ISBN:9787121100116
上架时间:2010-1-8
出版日期:2010 年1月
开本:16开
页码:525
版次:1-1
【编辑推荐】
全面系统,深入应用
通俗易懂,实例丰富
【内容简介】
《WPF专业编程指南》是一本WPF编程的专业参考书,全书通过大量的实例深入阐述了WPF中的传递事件、传递命令、相关属性、附加属性、逻辑树和视觉树等基本概念;介绍了各种画笔、画刷的使用方法; 深入讨论了WPF中的各种控件以及这些控件在窗口或页面上的排版,并进而阐述了控件的风格和模板及数据绑定等相关技术。
本书对WPF中的图形系统及图形和排版的变换原理也进行了深入的探讨,并在此基础上讨论了WPF中的动画技术。多媒体不是WPF专有的技术,但本书介绍了在WPF中使用多媒体的实用技术。用户控件和自定义控件是WPF中比较深入的内容,本书最后两章对这一课题进行了深层次的研究,通过对Ribbon控件的开发,不仅可以了解开发用户控件和自定义控件的方法,而且可以体会WPF项目的组织及多种WPF技术细节的综合运用。
本书可供.NET 桌面及互联网应用程序的开发人员、项目管理人员或准备进入这一领域的相关工程技术人员,以及大专院校相关专业的师生参考学习。
![](http://space.itpub.net/attachments/2010/01/16566727_201001131017321.jpg)
本书样章免费试读:http://www.china-pub.com/196280
作者: 李应保 [作译者介绍]
出版社:电子工业出版社
ISBN:9787121100116
上架时间:2010-1-8
出版日期:2010 年1月
开本:16开
页码:525
版次:1-1
【编辑推荐】
全面系统,深入应用
通俗易懂,实例丰富
【内容简介】
《WPF专业编程指南》是一本WPF编程的专业参考书,全书通过大量的实例深入阐述了WPF中的传递事件、传递命令、相关属性、附加属性、逻辑树和视觉树等基本概念;介绍了各种画笔、画刷的使用方法; 深入讨论了WPF中的各种控件以及这些控件在窗口或页面上的排版,并进而阐述了控件的风格和模板及数据绑定等相关技术。
本书对WPF中的图形系统及图形和排版的变换原理也进行了深入的探讨,并在此基础上讨论了WPF中的动画技术。多媒体不是WPF专有的技术,但本书介绍了在WPF中使用多媒体的实用技术。用户控件和自定义控件是WPF中比较深入的内容,本书最后两章对这一课题进行了深层次的研究,通过对Ribbon控件的开发,不仅可以了解开发用户控件和自定义控件的方法,而且可以体会WPF项目的组织及多种WPF技术细节的综合运用。
本书可供.NET 桌面及互联网应用程序的开发人员、项目管理人员或准备进入这一领域的相关工程技术人员,以及大专院校相关专业的师生参考学习。
目录
第一篇 WPF编程基础
第1章 WPF应用程序 2
1.1 WPF应用程序的创建 2
1.2 Dos窗口 3
1.3 WPF应用程序的启动和终止 4
1.4 输入参数 5
1.5 在Xaml中创建Application 7
1.6 窗口大小 10
1.7 互联网应用程序 10
1.8 应用程序的异常处理 11
1.9 应用程序中的资源 12
1.10 应用程序的发布 13
1.11 WPF开发环境 14
1.12 本章小结 15
第2章 XAML语言 16
2.1 XAML是一种界面描述语言 16
2.2 XAML的根元素 17
2.3 XAML命名空间(NameSpace) 17
2.4 XAML和代码分离技术(code behind) 18
2.5 子元素 19
第1章 WPF应用程序 2
1.1 WPF应用程序的创建 2
1.2 Dos窗口 3
1.3 WPF应用程序的启动和终止 4
1.4 输入参数 5
1.5 在Xaml中创建Application 7
1.6 窗口大小 10
1.7 互联网应用程序 10
1.8 应用程序的异常处理 11
1.9 应用程序中的资源 12
1.10 应用程序的发布 13
1.11 WPF开发环境 14
1.12 本章小结 15
第2章 XAML语言 16
2.1 XAML是一种界面描述语言 16
2.2 XAML的根元素 17
2.3 XAML命名空间(NameSpace) 17
2.4 XAML和代码分离技术(code behind) 18
2.5 子元素 19
.2.6 相关属性(Dependency Property) 20
2.7 附加属性(Attached Property) 21
2.8 XAML标记扩展 21
2.8.1 静态资源扩展(StaticResourceExtension) 22
2.8.2 动态资源扩展(DynamicResourceExtension) 23
2.8.3 数据绑定扩展(Binding) 24
2.8.4 相对数据源扩展(RelativeSource) 24
2.8.5 模板绑定(TemplateBinding) 25
2.8.6 x:Type扩展 26
2.8.7 x:Static扩展 26
2.8.8 x:null扩展 26
2.8.9 x:Array扩展 26
2.9 本章小结 27
第3章 WPF排版 28
3.1 排版基础 28
3.2 堆积面板(StackPanel) 29
3.3 WrapPanel 34
3.4 停靠面板(DockPanel) 35
3.5 表格式面板(Grid) 39
3.5.1 设定UI元素在Grid中的位置 40
3.5.2 设定Grid行或列的尺寸 40
3.5.3 元素横跨多个行列时的设定 41
3.5.4 在Grid中保持多行或多列大小的一致性 44
3.6 UniformGrid 46
3.7 画布面板(Canvas) 47
3.8 本章小结 48
第4章 WPF中的属性系统 49
4.1 CLR属性 49
4.2 相关属性的概念 50
4.2.1 相关属性的传递 50
4.2.2 WPF对相关属性的支持 51
4.3 自定义相关属性 52
4.4 附加属性 58
4.5 本章小结 67
第5章 画笔和画刷 68
5.1 WPF中的颜色 68
5.2 画刷 75
5.2.1 实心画刷(SolidColorBrush) 76
5.2.2 梯度画刷(GradientBrush) 77
5.2.3 线性梯度画刷(LinearGradientBrush) 77
5.2.4 圆形梯度画刷(RadialGradientBrush) 80
5.2.5 自制画刷(DrawingBrush) 81
5.2.6 粘贴模式(TileMode) 82
5.2.7 伸展方式(Stretch) 83
5.2.8 图像画刷(ImageBrush) 83
5.2.9 控件画刷(VisualBrush) 85
5.3 画笔 88
5.4 本章小结 95
第二篇 WPF专业程序员必备
第6章 WPF控制 98
6.1 WPF控件概述 98
6.2 内容控件(Content Control) 100
6.2.1 框架控件(Frame) 100
6.2.2 WPF按钮(Button) 101
6.2.3 拨动按钮(ToggleButton) 104
6.2.4 CheckBox控件 104
6.2.5 RadioButton控件 104
6.2.6 重复按钮(RepeatButton) 105
6.2.7 带有标题栏的内容控件(HeaderedContentControl) 106
6.2.8 分组框(GroupBox) 107
6.2.9 伸展控件(Expander) 109
6.2.10 标签控件(Label) 110
6.2.11 为按钮设置热键 111
6.2.12 ToolTip 113
6.2.13 ScrollViewer 115
6.3 条目控件(Items Controls) 116
6.3.1 菜单(Menu) 117
6.3.2 工具条(ToolBar) 123
6.3.3 Selector 126
6.3.4 组合框(ComboBox) 126
6.3.5 TabControl 129
6.3.6 列表框(ListBox) 132
6.3.7 ListView 135
6.3.8 状态条(StatusBar) 138
6.3.9 树形控件TreeView和TreeViewItem 140
6.4 文本控件(Text Controls) 143
6.4.1 口令输入框(PasswordBox) 143
6.4.2 文字输入框(TextBox) 144
6.4.3 RichTextBox 145
6.5 范围控件(Range Controls) 146
6.5.1 滚动条(ScrollBar) 146
6.5.2 滑动条(Slider) 147
6.5.3 进展条(ProgressBar) 152
6.6 本章小结 152
第7章 传递事件和传递命令系统 153
7.1 WPF中的元素树 153
7.2 传递事件(Routed Event) 165
7.2.1 RoutedEventArgs 166
7.2.2 终止事件传播 166
7.2.3 处理传递事件 167
7.2.4 附加传递事件(Attached Routed Event ) 168
7.3 考察传递事件 168
7.3.1 键盘事件的产生和传递 174
7.4 自定义传递事件 174
7.5 管理键盘和鼠标输入事件 182
7.5.1 键盘输入 182
7.5.2 鼠标输入 182
7.6 传递命令 184
7.6.1 ICommand接口 186
7.6.2 ICommandSource接口 186
7.6.3 CommandTarget 186
7.6.4 命令绑定(CommandBinding) 186
7.6.5 传递命令(Routed Command) 187
7.6.6 WPF命令仓库(Command Repository) 187
7.7 本章小结 190
第8章 资源 191
8.1 资源定义及其类型 191
8.2 统一资源标识(Unified Resource Identifier) 192
8.3 .NET开发平台对资源国际化的支持 196
8.3.1 WinForm下的资源管理 197
8.3.2 用XAML创建本地资源 200
8.4 WPF元素中定义的资源 202
8.4.1 静态资源(StaticResource) 203
8.4.2 资源的作用范围 204
8.4.3 静态扩展标识(Static markup extension) 205
8.4.4 动态资源扩展标识(DynamicResource Markup Extension) 208
8.5 本章小结 210
第9章 风格 211
9.1 Style类 211
9.2 Setters 211
9.3 TargetType 215
9.4 BasedOn 218
9.5 触发器(Triggers) 220
9.5.1 使用单一条件的触发器 221
9.5.2 使用多个条件的触发器 222
9.5.3 使用数据触发器(DataTrigger) 223
9.6 风格中的资源 225
9.7 IsSealed 227
9.8 把风格定格定义在单独的文件中 227
9.9 在FrameworkContentElement中使用风格 228
9.10 再谈Setter属性 229
9.11 本章小结 230
第10章 模板 231
10.1 模板概述 231
10.2 控件模板 232
10.2.1 在控件中使用模板 232
10.2.2 在资源中使用模板 234
10.2.3 在控件模板中使用TargetType 235
10.2.4 在模板中显示控件的内容 236
10.2.5 在模板中使用ContentPresenter 237
10.2.6 模板中元素名Name属性 239
10.2.7 在模板中绑定控件的其他属性 239
10.2.8 使用模板显示电力系统的断路器和刀闸开关 240
10.2.9 在风格中使用模板 242
10.2.10 获取WPF控件的模板 243
10.3 数据模板(DataTemplate) 244
10.3.1 我们所面临的问题 244
10.3.2 定义数据模板 247
10.3.3 在资源中使用数据模板 248
10.3.4 数据模板触发器 249
10.3.5 根据数据属性选择相应的模板 250
10.3.6 在数据模板中使用类型转换技术 253
10.4 ItemsPanelTemplate 258
10.5 层次结构数据模板(HierarchicalDataTemplate) 259
10.6 本章小结 262
第11章 数据绑定(Data Binding) 263
11.1 数据绑定概述 263
11.2 最简单的数据绑定——从界面元素到界面元素 264
11.2.1 一对一数据绑定 264
11.2.2 在C#中,实现数据绑定 265
11.2.3 对不是FrameworkElement和FrameworkContentElement元素实现数据绑定 266
11.3 使用不同的绑定模式 266
11.4 动态绑定 267
11.5 最简单的数据绑定——从.NET对象到界面元素 268
11.6 DataContext 271
11.7 控制绑定时刻 272
11.8 开发自己的IValueConverter 273
11.9 在数据绑定中加入校验 275
11.9.1 开发业务规则类 276
11.9.2 在绑定中添加任意多个业务规则 279
11.9.3 在控件上显示校验信息 279
11.9.4 触发错误处理事件 280
11.9.5 清除控件上的错误信息 282
11.10 对集合对象的绑定 283
11.10.1 使用DisplayMemberPath属性 286
11.10.2 显示当前条目 286
11.10.3 遍历集合中的记录 288
11.10.4 增加或删除记录 290
11.10.5 对集合对象分组 293
11.10.6 对集合对象排序 294
11.10.7 对集合对象过滤 295
11.11 数据源 296
11.11.1 XML数据源 296
11.11.2 .NET对象数据源 301
11.12 层次结构数据的绑定 303
11.13 本章小结 303
第12章 窗口对话框和打印 304
12.1 窗口(Window) 304
12.1.1 窗口的状态变化和事件 304
12.1.2 确定视窗的位置 309
12.1.3 确定视窗的大小 310
12.1.4 视窗状态属性(WindowState) 310
12.1.5 视窗大小模式(ResizeMode) 310
12.1.6 视窗风格(WindowStyle) 311
12.2 网页(Page) 311
12.2.1 创建网页 312
12.2.2 KeepAlive属性 312
12.2.3 NavigationService属性 312
12.2.4 ShowsNavigationUI属性 313
12.3 浏览窗口(NavigationWindow) 313
12.3.1 使用统一风格 314
12.3.2 设置NavigationWindow的标题 314
12.3.3 浏览网页 315
12.3.4 使用HyperLink类 315
12.3.5 使用NavigationService转到不同的网页 318
12.3.6 使用浏览日志转换到不同的网页 319
12.3.7 浏览窗口的浏览事件 319
12.4 对话框(DialogBox) 320
12.4.1 消息框(MessageBox) 320
12.4.2 通用对话框 320
12.4.3 自定义对话框 322
12.5 打印输出 323
12.5.1 XPS 文档简介 323
12.5.2 创建XPS文档 324
12.5.3 显示XPS文档 328
12.5.4 打印 333
12.6 本章小结 333
第三篇 图形和动画
第13章 二维图形 336
13.1 WPF图形系统概述 336
13.1.1 统一编程模型 336
13.1.2 坐标系统 338
13.1.3 Shape 和Geometry 338
13.2 Shape及其派生类 339
13.2.1 直线(Line) 340
13.2.2 矩形(Rectangle) 340
13.2.3 椭圆(Ellipse) 341
13.2.4 折线(Polyline) 341
13.2.5 多边形(Polygon) 342
13.2.6 填充规则(FillRule) 342
13.2.7 路径(Path) 343
13.3 Geometry及其派生类 343
13.3.1 直线(LineGeometry) 344
13.3.2 矩形(RectangleGeometry) 344
13.3.3 椭圆(EllipseGeometry) 344
13.3.4 几何图形组(GeometryGroup) 345
13.3.5 合并图形(CombinedGeometry) 346
13.3.6 几何路径(PathGeometry) 348
13.3.7 分段路径(PathSegment) 350
13.3.8 弧线(ArcSegment) 350
13.3.9 直线段(LineSegment) 352
13.3.10 折线段(PolyLineSegment) 353
13.3.11 柏之线(BezierSegment) 353
13.3.12 多段柏之线(PolyBezierSegment) 354
13.3.13 二次柏之线(QuadraticBezierSegment) 354
13.3.14 多段二次柏之线(PolyQuadraticBezierSegment) 355
13.3.15 迷你绘图语言 356
13.3.16 流几何图形(StreamGeometry) 360
13.4 绘制(Drawing) 361
13.4.1 使用DrawingImage显示几何图形 362
13.4.2 使用DrawingVisual来显示几何绘制 363
13.4.3 创建DrawingVisual宿主 363
13.4.4 绘制几何图形 364
13.4.5 把DrawingVisual对象加到FrameworkElement中的视觉树和逻辑树中 364
13.4.6 选择视觉元素(Visual Hit Testing) 366
13.4.7 简单选择判断 366
13.4.8 多个视觉元素的选择判断 367
13.4.9 视觉元素重叠时的选择判断 367
13.5 本章小结 368
第14章 图形转换 369
14.1 图形转换概述 369
14.2 项目管理器 370
14.3 旋转转换(RotateTransform) 376
14.4 位移转换(TranslateTransform) 378
14.5 缩放转换(ScaleTransform) 380
14.6 扭曲转换(SkewTransform) 382
14.7 组合转换(TransformGroup) 384
14.8 矩阵转换(MatrixTransform) 385
14.8.1 矢量操作 385
14.8.2 H坐标系 386
14.8.3 位移转换矩阵 387
14.8.4 旋转转换矩阵 388
14.8.5 缩放转换矩阵 388
14.8.6 扭曲转换矩阵 389
14.8.7 矩阵操作 389
14.9 本章小结 394
第15章 动画 395
15.1 WPF中的动画 395
15.2 动画类继承树 396
15.3 一个简单的动画 397
15.4 控制动画 398
15.4.1 动画所用的时间(duration) 399
15.4.2 设定动画开始时间BeginTime 399
15.4.3 设定自动返回(AutoReverse) 399
15.4.4 设定动画速度(SpeedRatio) 400
15.4.5 加快和减慢动画(AccelarationRatio和DecelarationRatio) 400
15.4.6 设定动画的重复特性(RepeatBehavior) 402
15.4.7 设定动画的终止状态(FillBehavior) 402
15.4.8 设定相关属性的动画范围(From和To) 402
15.4.9 设定相关属性的动画范围(By) 403
15.4.10 设定IsAdditive和IsCumulative 属性 403
15.4.11 WPF动画的时间片类 403
15.5 故事板(Storyboard) 404
15.5.1 使用故事板的一般格式 404
15.5.2 设定Target和TargetName 406
15.5.3 操作Storyboard 406
15.6 KeyFrame 408
15.6.1 线性KeyFrame 409
15.6.2 非线性KeyFrame(Spline KeyFrame) 412
15.6.3 离散KeyFrame(Discrete KeyFrame) 414
15.7 本章小结 416
第四篇 开发WPF产品
第16章 多媒体技术及其应用 418
16.1 播放.wav声音格式的SoudPlayer和SoundPlayerAction 418
16.1.1 装载.wav文件 418
16.1.2 播放.wav文件 419
16.1.3 停止播放 419
16.1.4 在XAML中使用SoundPlayerAction 419
16.2 播放多种格式的声音和图像 420
16.2.1 播放模式 421
16.2.2 使用MediaPlayer实例 422
16.2.3 使用MediaElement和MediaTimeline实例 426
16.3 语音合成和语音识别 430
16.3.1 尝试Windows Vista的语音功能 431
16.3.2 使你的程序发音 432
16.3.3 PromptBuilder和SSML 433
16.3.4 语音识别中的语法 434
16.4 本章小结 436
第17章 定制控件和排版 437
17.1 用户控件和自定义控件 437
17.2 创建用户控件(User Control) 439
17.2.1 设计用户控件UI 439
17.2.2 开发支持用户控件UI的逻辑 442
17.3 创建自定义控件(Custom Control) 446
17.4 创建自定义排版(Custom Panel) 459
17.4.1 照片浏览器 461
17.5 本章小结 471
第18章 综合应用 472
18.1 Ribbon界面概览 472
18.2 项目的组织 473
18.3 管理Generic.XAML文件 475
18.4 开发自定义控件 476
18.4.1 自定义控件间的关系 476
18.4.2 Ribbon按钮 477
18.4.3 Ribbon分组(Group) 483
18.4.4 RibbonTabItem 492
18.4.5 RibbonApplicationMenuItem 493
18.4.6 RibbonApplicationMenu 495
18.4.7 RibbonQAToolBar 496
18.4.8 RibbonBar 497
18.4.9 RibbonWindow 498
18.4.10 支持不同皮肤 514
18.5 使用Ribbon自定义控件实例 516
18.6 本章小结 525
参考文献 526
2.7 附加属性(Attached Property) 21
2.8 XAML标记扩展 21
2.8.1 静态资源扩展(StaticResourceExtension) 22
2.8.2 动态资源扩展(DynamicResourceExtension) 23
2.8.3 数据绑定扩展(Binding) 24
2.8.4 相对数据源扩展(RelativeSource) 24
2.8.5 模板绑定(TemplateBinding) 25
2.8.6 x:Type扩展 26
2.8.7 x:Static扩展 26
2.8.8 x:null扩展 26
2.8.9 x:Array扩展 26
2.9 本章小结 27
第3章 WPF排版 28
3.1 排版基础 28
3.2 堆积面板(StackPanel) 29
3.3 WrapPanel 34
3.4 停靠面板(DockPanel) 35
3.5 表格式面板(Grid) 39
3.5.1 设定UI元素在Grid中的位置 40
3.5.2 设定Grid行或列的尺寸 40
3.5.3 元素横跨多个行列时的设定 41
3.5.4 在Grid中保持多行或多列大小的一致性 44
3.6 UniformGrid 46
3.7 画布面板(Canvas) 47
3.8 本章小结 48
第4章 WPF中的属性系统 49
4.1 CLR属性 49
4.2 相关属性的概念 50
4.2.1 相关属性的传递 50
4.2.2 WPF对相关属性的支持 51
4.3 自定义相关属性 52
4.4 附加属性 58
4.5 本章小结 67
第5章 画笔和画刷 68
5.1 WPF中的颜色 68
5.2 画刷 75
5.2.1 实心画刷(SolidColorBrush) 76
5.2.2 梯度画刷(GradientBrush) 77
5.2.3 线性梯度画刷(LinearGradientBrush) 77
5.2.4 圆形梯度画刷(RadialGradientBrush) 80
5.2.5 自制画刷(DrawingBrush) 81
5.2.6 粘贴模式(TileMode) 82
5.2.7 伸展方式(Stretch) 83
5.2.8 图像画刷(ImageBrush) 83
5.2.9 控件画刷(VisualBrush) 85
5.3 画笔 88
5.4 本章小结 95
第二篇 WPF专业程序员必备
第6章 WPF控制 98
6.1 WPF控件概述 98
6.2 内容控件(Content Control) 100
6.2.1 框架控件(Frame) 100
6.2.2 WPF按钮(Button) 101
6.2.3 拨动按钮(ToggleButton) 104
6.2.4 CheckBox控件 104
6.2.5 RadioButton控件 104
6.2.6 重复按钮(RepeatButton) 105
6.2.7 带有标题栏的内容控件(HeaderedContentControl) 106
6.2.8 分组框(GroupBox) 107
6.2.9 伸展控件(Expander) 109
6.2.10 标签控件(Label) 110
6.2.11 为按钮设置热键 111
6.2.12 ToolTip 113
6.2.13 ScrollViewer 115
6.3 条目控件(Items Controls) 116
6.3.1 菜单(Menu) 117
6.3.2 工具条(ToolBar) 123
6.3.3 Selector 126
6.3.4 组合框(ComboBox) 126
6.3.5 TabControl 129
6.3.6 列表框(ListBox) 132
6.3.7 ListView 135
6.3.8 状态条(StatusBar) 138
6.3.9 树形控件TreeView和TreeViewItem 140
6.4 文本控件(Text Controls) 143
6.4.1 口令输入框(PasswordBox) 143
6.4.2 文字输入框(TextBox) 144
6.4.3 RichTextBox 145
6.5 范围控件(Range Controls) 146
6.5.1 滚动条(ScrollBar) 146
6.5.2 滑动条(Slider) 147
6.5.3 进展条(ProgressBar) 152
6.6 本章小结 152
第7章 传递事件和传递命令系统 153
7.1 WPF中的元素树 153
7.2 传递事件(Routed Event) 165
7.2.1 RoutedEventArgs 166
7.2.2 终止事件传播 166
7.2.3 处理传递事件 167
7.2.4 附加传递事件(Attached Routed Event ) 168
7.3 考察传递事件 168
7.3.1 键盘事件的产生和传递 174
7.4 自定义传递事件 174
7.5 管理键盘和鼠标输入事件 182
7.5.1 键盘输入 182
7.5.2 鼠标输入 182
7.6 传递命令 184
7.6.1 ICommand接口 186
7.6.2 ICommandSource接口 186
7.6.3 CommandTarget 186
7.6.4 命令绑定(CommandBinding) 186
7.6.5 传递命令(Routed Command) 187
7.6.6 WPF命令仓库(Command Repository) 187
7.7 本章小结 190
第8章 资源 191
8.1 资源定义及其类型 191
8.2 统一资源标识(Unified Resource Identifier) 192
8.3 .NET开发平台对资源国际化的支持 196
8.3.1 WinForm下的资源管理 197
8.3.2 用XAML创建本地资源 200
8.4 WPF元素中定义的资源 202
8.4.1 静态资源(StaticResource) 203
8.4.2 资源的作用范围 204
8.4.3 静态扩展标识(Static markup extension) 205
8.4.4 动态资源扩展标识(DynamicResource Markup Extension) 208
8.5 本章小结 210
第9章 风格 211
9.1 Style类 211
9.2 Setters 211
9.3 TargetType 215
9.4 BasedOn 218
9.5 触发器(Triggers) 220
9.5.1 使用单一条件的触发器 221
9.5.2 使用多个条件的触发器 222
9.5.3 使用数据触发器(DataTrigger) 223
9.6 风格中的资源 225
9.7 IsSealed 227
9.8 把风格定格定义在单独的文件中 227
9.9 在FrameworkContentElement中使用风格 228
9.10 再谈Setter属性 229
9.11 本章小结 230
第10章 模板 231
10.1 模板概述 231
10.2 控件模板 232
10.2.1 在控件中使用模板 232
10.2.2 在资源中使用模板 234
10.2.3 在控件模板中使用TargetType 235
10.2.4 在模板中显示控件的内容 236
10.2.5 在模板中使用ContentPresenter 237
10.2.6 模板中元素名Name属性 239
10.2.7 在模板中绑定控件的其他属性 239
10.2.8 使用模板显示电力系统的断路器和刀闸开关 240
10.2.9 在风格中使用模板 242
10.2.10 获取WPF控件的模板 243
10.3 数据模板(DataTemplate) 244
10.3.1 我们所面临的问题 244
10.3.2 定义数据模板 247
10.3.3 在资源中使用数据模板 248
10.3.4 数据模板触发器 249
10.3.5 根据数据属性选择相应的模板 250
10.3.6 在数据模板中使用类型转换技术 253
10.4 ItemsPanelTemplate 258
10.5 层次结构数据模板(HierarchicalDataTemplate) 259
10.6 本章小结 262
第11章 数据绑定(Data Binding) 263
11.1 数据绑定概述 263
11.2 最简单的数据绑定——从界面元素到界面元素 264
11.2.1 一对一数据绑定 264
11.2.2 在C#中,实现数据绑定 265
11.2.3 对不是FrameworkElement和FrameworkContentElement元素实现数据绑定 266
11.3 使用不同的绑定模式 266
11.4 动态绑定 267
11.5 最简单的数据绑定——从.NET对象到界面元素 268
11.6 DataContext 271
11.7 控制绑定时刻 272
11.8 开发自己的IValueConverter 273
11.9 在数据绑定中加入校验 275
11.9.1 开发业务规则类 276
11.9.2 在绑定中添加任意多个业务规则 279
11.9.3 在控件上显示校验信息 279
11.9.4 触发错误处理事件 280
11.9.5 清除控件上的错误信息 282
11.10 对集合对象的绑定 283
11.10.1 使用DisplayMemberPath属性 286
11.10.2 显示当前条目 286
11.10.3 遍历集合中的记录 288
11.10.4 增加或删除记录 290
11.10.5 对集合对象分组 293
11.10.6 对集合对象排序 294
11.10.7 对集合对象过滤 295
11.11 数据源 296
11.11.1 XML数据源 296
11.11.2 .NET对象数据源 301
11.12 层次结构数据的绑定 303
11.13 本章小结 303
第12章 窗口对话框和打印 304
12.1 窗口(Window) 304
12.1.1 窗口的状态变化和事件 304
12.1.2 确定视窗的位置 309
12.1.3 确定视窗的大小 310
12.1.4 视窗状态属性(WindowState) 310
12.1.5 视窗大小模式(ResizeMode) 310
12.1.6 视窗风格(WindowStyle) 311
12.2 网页(Page) 311
12.2.1 创建网页 312
12.2.2 KeepAlive属性 312
12.2.3 NavigationService属性 312
12.2.4 ShowsNavigationUI属性 313
12.3 浏览窗口(NavigationWindow) 313
12.3.1 使用统一风格 314
12.3.2 设置NavigationWindow的标题 314
12.3.3 浏览网页 315
12.3.4 使用HyperLink类 315
12.3.5 使用NavigationService转到不同的网页 318
12.3.6 使用浏览日志转换到不同的网页 319
12.3.7 浏览窗口的浏览事件 319
12.4 对话框(DialogBox) 320
12.4.1 消息框(MessageBox) 320
12.4.2 通用对话框 320
12.4.3 自定义对话框 322
12.5 打印输出 323
12.5.1 XPS 文档简介 323
12.5.2 创建XPS文档 324
12.5.3 显示XPS文档 328
12.5.4 打印 333
12.6 本章小结 333
第三篇 图形和动画
第13章 二维图形 336
13.1 WPF图形系统概述 336
13.1.1 统一编程模型 336
13.1.2 坐标系统 338
13.1.3 Shape 和Geometry 338
13.2 Shape及其派生类 339
13.2.1 直线(Line) 340
13.2.2 矩形(Rectangle) 340
13.2.3 椭圆(Ellipse) 341
13.2.4 折线(Polyline) 341
13.2.5 多边形(Polygon) 342
13.2.6 填充规则(FillRule) 342
13.2.7 路径(Path) 343
13.3 Geometry及其派生类 343
13.3.1 直线(LineGeometry) 344
13.3.2 矩形(RectangleGeometry) 344
13.3.3 椭圆(EllipseGeometry) 344
13.3.4 几何图形组(GeometryGroup) 345
13.3.5 合并图形(CombinedGeometry) 346
13.3.6 几何路径(PathGeometry) 348
13.3.7 分段路径(PathSegment) 350
13.3.8 弧线(ArcSegment) 350
13.3.9 直线段(LineSegment) 352
13.3.10 折线段(PolyLineSegment) 353
13.3.11 柏之线(BezierSegment) 353
13.3.12 多段柏之线(PolyBezierSegment) 354
13.3.13 二次柏之线(QuadraticBezierSegment) 354
13.3.14 多段二次柏之线(PolyQuadraticBezierSegment) 355
13.3.15 迷你绘图语言 356
13.3.16 流几何图形(StreamGeometry) 360
13.4 绘制(Drawing) 361
13.4.1 使用DrawingImage显示几何图形 362
13.4.2 使用DrawingVisual来显示几何绘制 363
13.4.3 创建DrawingVisual宿主 363
13.4.4 绘制几何图形 364
13.4.5 把DrawingVisual对象加到FrameworkElement中的视觉树和逻辑树中 364
13.4.6 选择视觉元素(Visual Hit Testing) 366
13.4.7 简单选择判断 366
13.4.8 多个视觉元素的选择判断 367
13.4.9 视觉元素重叠时的选择判断 367
13.5 本章小结 368
第14章 图形转换 369
14.1 图形转换概述 369
14.2 项目管理器 370
14.3 旋转转换(RotateTransform) 376
14.4 位移转换(TranslateTransform) 378
14.5 缩放转换(ScaleTransform) 380
14.6 扭曲转换(SkewTransform) 382
14.7 组合转换(TransformGroup) 384
14.8 矩阵转换(MatrixTransform) 385
14.8.1 矢量操作 385
14.8.2 H坐标系 386
14.8.3 位移转换矩阵 387
14.8.4 旋转转换矩阵 388
14.8.5 缩放转换矩阵 388
14.8.6 扭曲转换矩阵 389
14.8.7 矩阵操作 389
14.9 本章小结 394
第15章 动画 395
15.1 WPF中的动画 395
15.2 动画类继承树 396
15.3 一个简单的动画 397
15.4 控制动画 398
15.4.1 动画所用的时间(duration) 399
15.4.2 设定动画开始时间BeginTime 399
15.4.3 设定自动返回(AutoReverse) 399
15.4.4 设定动画速度(SpeedRatio) 400
15.4.5 加快和减慢动画(AccelarationRatio和DecelarationRatio) 400
15.4.6 设定动画的重复特性(RepeatBehavior) 402
15.4.7 设定动画的终止状态(FillBehavior) 402
15.4.8 设定相关属性的动画范围(From和To) 402
15.4.9 设定相关属性的动画范围(By) 403
15.4.10 设定IsAdditive和IsCumulative 属性 403
15.4.11 WPF动画的时间片类 403
15.5 故事板(Storyboard) 404
15.5.1 使用故事板的一般格式 404
15.5.2 设定Target和TargetName 406
15.5.3 操作Storyboard 406
15.6 KeyFrame 408
15.6.1 线性KeyFrame 409
15.6.2 非线性KeyFrame(Spline KeyFrame) 412
15.6.3 离散KeyFrame(Discrete KeyFrame) 414
15.7 本章小结 416
第四篇 开发WPF产品
第16章 多媒体技术及其应用 418
16.1 播放.wav声音格式的SoudPlayer和SoundPlayerAction 418
16.1.1 装载.wav文件 418
16.1.2 播放.wav文件 419
16.1.3 停止播放 419
16.1.4 在XAML中使用SoundPlayerAction 419
16.2 播放多种格式的声音和图像 420
16.2.1 播放模式 421
16.2.2 使用MediaPlayer实例 422
16.2.3 使用MediaElement和MediaTimeline实例 426
16.3 语音合成和语音识别 430
16.3.1 尝试Windows Vista的语音功能 431
16.3.2 使你的程序发音 432
16.3.3 PromptBuilder和SSML 433
16.3.4 语音识别中的语法 434
16.4 本章小结 436
第17章 定制控件和排版 437
17.1 用户控件和自定义控件 437
17.2 创建用户控件(User Control) 439
17.2.1 设计用户控件UI 439
17.2.2 开发支持用户控件UI的逻辑 442
17.3 创建自定义控件(Custom Control) 446
17.4 创建自定义排版(Custom Panel) 459
17.4.1 照片浏览器 461
17.5 本章小结 471
第18章 综合应用 472
18.1 Ribbon界面概览 472
18.2 项目的组织 473
18.3 管理Generic.XAML文件 475
18.4 开发自定义控件 476
18.4.1 自定义控件间的关系 476
18.4.2 Ribbon按钮 477
18.4.3 Ribbon分组(Group) 483
18.4.4 RibbonTabItem 492
18.4.5 RibbonApplicationMenuItem 493
18.4.6 RibbonApplicationMenu 495
18.4.7 RibbonQAToolBar 496
18.4.8 RibbonBar 497
18.4.9 RibbonWindow 498
18.4.10 支持不同皮肤 514
18.5 使用Ribbon自定义控件实例 516
18.6 本章小结 525
参考文献 526
china-pub网上书店满48元即刻享受免运费