第一篇WPF编程基础 2
第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:nuII扩展 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图像画刷(Im ageBrush) 83
5.2.9控件画刷( VisualBrush) 85
5.3画笔 88
5.4本章小结 95
第二篇WPF专业程序员必备 98
第6章WPF控制 98
6.1 W PF控件概述 98
6.2内容控件(Content Control ) 100
6.2.1框架控件(Frame) 100
6.2.2 W PF按钮(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分组框(G roupBox) 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树形控件TreeV iew和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用XAM L创建本地资源 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 Navigation Service属性 312
12.2.4 ShowsNavigationUl属性 313
12.3浏览窗口(NavigationW indow ) 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
第三篇 图形和动画 336
第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二次柏之线(Quad raticBezierSegment ) 354
13.3.14多段二次柏之线(PolyQuadraticBezierSegment ) 355
13.3.15 迷你绘图语言 356
13.3.16流几何图形(StreamGeometry ) 360
13.4绘制(Drawing) 361
13.4.1使用Drawinglmage显示几何图形 362
13.4.2使用DrawingVisual来显示几何绘制 363
13.4.3创建DrawingVisual宿主 363
13.4.4绘制几何图形 364
13.4.5把DrawingV isual对象加到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缩放转换(Sca l eTra nsform ) 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加快和减慢动画(Accelaration Ratio和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产品 418
第16章 多媒体技术及其应用 418
16.1播放.wav声音格式的SoudPlayer和Sound PlayerAction 418
16.1.1装载.wav文件 418
16.1.2播放.wav文件 419
16.1.3停止播放 419
16.1.4在XAML中使用Sound PlayerAction 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和SS M L 433
16.3.4语音识别中的语法 434
16.4本章小结 436
第17章 定制控件和排版 437
17.1用户控件和自定义控件 437
17.2创建用户控件(User Control) 439
17.2.1设计用户控件U I 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 RibbonTabltem 492
18.4.5 RibbonApplicationMenultem 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