第1篇 C#项目开发基础 2
第1章 .NET4.0体系结构 2
1.1 C#与.NET的关系 2
1.1.1 .NET Framework 4.0简介 2
1.1.2 LINQ语言集成查询 4
1.1.3 WPF表现层技术简介 5
1.1.4 WCF通信层技术简介 5
1.1.5 WF工作流基础简介 6
1.1.6 Windows CardSpace技术简介 7
1.2公共语言运行时 7
1.2.1通用语言基础架构CLI 8
1.2.2 CLR的作用 8
1.3 C#4.0的新增特性 9
1.3.1 C# 4.0面向对象编程简介 9
1.3.2强数据类型 11
1.3.3动态类型绑定 12
1.3.4泛型类型的协变(covariant)和逆变(contravariant) 13
1.3.5命名参数和可选参数 16
1.4使用Visual Studio 2010集成化开发环境 16
1.4.1 Visual Studio 2010的新增特性 17
1.4.2开始页面 17
1.4.3多目标支持的新增对话框 18
1.4.4可视化设计类 18
1.4.5增强的扩展管理器 18
1.5小结 20
第2章 C#4.0语法精深解析 21
2.1数据类型 21
2.1.1值类型 22
2.1.2引用类型 23
2.1.3可空类型 24
2.1.4隐式类型 26
2.1.5枚举类型 26
2.1.6结构类型 27
2.2类、命名空间和程序集 28
2.2.1命名空间 28
2.2.2程序集 29
2.2.3类和对象 30
2.3继承和多态 31
2.3.1继承的原理 32
2.3.2多态的实现 33
2.4方法和函数 34
2.4.1方法和函数的定义 34
2.4.2方法的参数 35
2.4.3方法的重载 37
2.4.4静态方法 38
2.5泛型与集合 39
2.5.1 .NET提供的集合类型 39
2.5.2什么是泛型 43
2.5.3 .NET泛型集合类 44
2.6小结 47
第2篇 典型模块开发 50
第3章 Silverlight报表查看模块(Silverlight 4与ReportViewer开发报表应用) 50
3.1报表查看模块概述 50
3.1.1 Microsoft ReportViewer控件简介 50
3.1.2报表查看器模块预览 51
3.2 Model与ViewModel层的实现 52
3.2.1实现调用Web服务的 Model层 53
3.2.2异步调用Web服务 55
3.2.3视图模型ViewMode 55
3.2.4设置服务器端报表路径 57
3.2.5 ViewModel中的PropertyChanged属性变更事件 58
3.3 Silverlight用户界面功能的实现 60
3.3.1使用Blend 4创建Silverlight用户主界面 60
3.3.2绑定按钮事件到ViewModel 61
3.3.3设置性别选择的ComboBox控件 63
3.3.4使用Fluid UI实现飞行的人员信息效果 64
3.3.5实现HTMLPopupWindow类 67
3.3.6实现RangeSlider用户控件 68
3.3.7在RangeSlider中使用Slider控件 71
3.4实现ASP.NET Web服务与报表 72
3.4.1定义ASP.NET Web服务 72
3.4.2创建RDLC报表 74
3.4.3使用ReportViewer报表查看器控件 77
3.4.4定制报表的输出 77
3.4.5输出报表为PDF文件 78
3.4.6使用LINQ搜索数据 80
3.4.7将LINQ查询转换为DataTable对象 81
3.4.8用ShowReportViewer显示报表页面 82
3.5关键技术讲解 83
3.5.1理解ReportViewer控件 83
3.5.2在Silverlight客户端控制浏览器 84
3.6小结 85
第4章 实现XML阅读器(Visual Studio风格的用户界面) 86
4.1 XML阅读器概述 86
4.1.1 Visual Studio风格的用户界面概述 87
4.1.2大容量XML文件的读取 88
4.1.3 XML阅读器预览 88
4.2 Visual Studio风格的用户界面实现 90
4.2.1可停靠的主界面设计 90
4.2.2支持拖放的子窗口 91
4.2.3限制子窗口的停放位置 93
4.2.4保存和加载主窗体状态 94
4.2.5实现文件拖放效果 96
4.3快速XML阅读查看界面实现 98
4.3.1实现可停靠的文档界面 98
4.3.2使用多线程加载XML文档 99
4.3.3实现文档显示与加载同步进行 101
4.3.4计算虚拟滚动条的显示位置 102
4.3.5实现XML的打印与打印预览功能 103
4.3.6多线程搜索功能的实现 107
4.3.7关联多线程搜索事件 109
4.4实现XML读取与分析的核心功能 111
4.4.1实现QuickXmlReader类 112
4.4.2实现XML快速读取类QuickStreamReader 113
4.4.3快速搜索类QuickXmlSearch的实现 115
4.5深入理解DockPanel控件 117
4.6小结 119
第5章 可拖放文件管理模块(Silverlight 4和MVVM模式应用) 120
5.1 MVVM简介 120
5.1.1 MVVM的实现方式 121
5.1.2 FileManager的系统结构 121
5.2创建ASP.NET Web项目 122
5.2.1实现文件上传实体类 122
5.2.2实现文件上传功能 124
5.2.3实现文件上传HTTP扩展 126
5.2.4实现文件下载功能 127
5.2.5创建Web服务获取文件列表 130
5.3使用MVVM模式开发Silverlight客户端 132
5.3.1实现ICommand接口 132
5.3.2实现Model模型 133
5.3.3实现ViewModel模型 136
5.3.4在ViewModel中实现文件拖放功能 138
5.4用户界面功能实现 141
5.4.1使用Blend 4构建主用户界面 141
5.4.2创建文件拖放效果 145
5.5关键技术讲解 147
5.5.1再议MVVM模式 147
5.5.2 Expression Blend 4功能介绍 147
5.6小结 149
第6章 网络视频播放器(Silverlight多媒体技术) 150
6.1 Silverlight多媒体简介 150
6.1.1 MediaElement元素的使用 151
6.1.2 Expression Encoder概述 152
6.2实现Model和ViewModel 154
6.2.1实现获取文件列表的Web服务 154
6.2.2实现Model模型 155
6.2.3实现ViewModel模型 158
6.2.4操纵MediaElement实现视频控制 161
6.2.5设置MediaElement的全屏播放 166
6.3使用Expression Blend 4设计UI 168
6.3.1播放界面设计 168
6.3.2绑定MediaElement到ViewModel中的属性和命令 169
6.3.3绑定其他UI元素到ViewModel中 172
6.4关键技术讲解 173
6.4.1关于RX Framework 173
6.4.2 ViewModel中的Command详解 175
6.5小结 176
第7章 再造俄罗斯方块(用Silverlight开发游戏) 177
7.1 Silverlight游戏架构设计 177
7.1.1游戏运行原理 178
7.1.2基于Silverlight的游戏架构设计 178
7.1.3游戏解决方案项目介绍 179
7.2游戏核心功能的实现 180
7.2.1方格的设计 180
7.2.2形状方块BaseBricksArray基类的实现 182
7.2.3形状方块BaseShape基类的实现 185
7.2.4方块的旋转功能实现 188
7.2.5定制方块字母形状的实现 190
7.2.6 BrickBoard容器类的实现 191
7.2.7 BrickBoard容器类重载的构造函数 192
7.2.8初始化游戏方块与形状 192
7.2.9确定方块可放置位置 194
7.2.10自动消行功能的实现 196
7.2.11处理方块的移动行为 198
7.2.12 BricksPresenter控制器类的实现 200
7.3 Silverlight项目MVVM模式实现 202
7.3.1定义IView接口 202
7.3.2实现IView接口 202
7.3.3显示玩家得分功能实现 205
7.3.4实现供UI绑定的属性 207
7.3.5实现ICommand接口提供命令绑定 207
7.4实现UI界面 209
7.4.1设置游戏主界面 209
7.4.2使用样式和模板定义显示方块 212
7.5关键技术讲解 214
7.5.1什么是IOC控制反转 214
7.5.2理解Silverlight样式和模板 214
7.6小结 215
第8章 图书阅读器(WPF用户控件技术) 216
8.1图书阅读器系统架构 216
8.1.1使用图书阅读器读书 217
8.1.2系统架构设计 219
8.1.3项目文件夹介绍 219
8.2系统核心类的实现 220
8.2.1实现图书目录Catalog类 220
8.2.2加载书签信息 223
8.2.3加载图书封面 224
8.2.4多线程图书搜索 226
8.2.5保存图书信息 229
8.2.6刷新图书列表 229
8.2.7定义图书接口IBook 230
8.2.8图书基类BaseBook 231
8.2.9图书页面接口IBookItem的定义 234
8.2.10实现Rar压缩文件格式的图书 234
8.2.11多线程提取图书封面 236
8.2.12从压缩文件中提取图书 237
8.2.13使用缓存提升加载速度 238
8.2.14实现缓存管理核心类 240
8.2.15 实现自定义的异常处理 243
8.3设计BookReader用户主界面 244
8.3.1设计系统主界面 244
8.3.2实现主窗口样式绑定 246
8.3.3实现图书列表界面 247
8.3.4实现图书阅读界面 251
8.4实现用户界面功能 252
8.4.1实现工具按钮事件 252
8.4.2实现上下文菜单事件处理 256
8.4.3创建PageViewer用户控件 258
8.4.4 PageViewer控件属性定义 259
8.4.5定义PageViewer控件路由事件 260
8.4.6处理屏幕滚动 261
8.4.7控制鼠标滚轮 263
8.4.8实现页面拖动效果 264
8.4.9创建放大器用户控件 266
8.4.10在PageViewer中加载放大器 268
8.5关键技术讲解 269
8.5.1在WPF中使用多线程 269
8.5.2 WPF中的事件路由技术 270
8.6小结 271
第9章 多媒体管理工具(用WPF打造动感用户界面) 272
9.1 WPF用户界面设计概述 272
9.1.1理解WPF用户界面设计 273
9.1.2多媒体管理工具使用预览 273
9.2使用WPF实现用户界面 274
9.2.1实现用户主界面布局 274
9.2.2实现鼠标拖动效果 275
9.2.3实现主界面ViewModel 277
9.2.4实现面包屑管理服务 279
9.2.5初始化面包屑管理服务 282
9.3面包屑视图控件的实现 283
9.3.1面包屑管理器用户界面的实现 283
9.3.2使用转场控件实现转场效果 285
9.3.3使用滚动列表控件FrictionScrollViewer 286
9.3.4定义面包屑管理器用户控件 288
9.3.5添加面包屑 288
9.3.6移除面包屑 290
9.3.7转场特效的具体实现 292
9.3.8使用自定义的转换器 294
9.3.9实现缩略图面板 295
9.4实现音乐和图片视图控件 297
9.4.1音乐视图控件的布局 298
9.4.2用ListBox显示音乐信息 299
9.4.3音乐视图代码实现 301
9.4.4实现图片视图控件 302
9.5关键技术讲解 304
9.5.1理解WPF的依赖属性和附加属性 304
9.5.2使用WPF数据模板定义控件呈现 305
9.6小结 306
第10章 基于WCF的Silverlight绘图聊天程序(WCF技术实战) 307
10.1 WCF技术概述 307
10.1.1 WCF技术的开发模型 307
10.1.2绘图聊天程序的预览效果 308
10.2 WCF服务器端功能的设计 309
10.2.1定义WCF服务契约 309
10.2.2定义WCF回调契约 311
10.2.3实现服务契约 311
10.2.4客户端注册功能的实现 312
10.2.5绘图方法的实现 315
10.2.6配置WCF服务器 316
10.3 Silverlight客户端的设计 319
10.3.1添加对WCF服务的引用 319
10.3.2设计主用户界面 320
10.3.3实现用户注册到服务器功能 322
10.3.4实现DuplexClientHelper服务帮助类 325
10.3.5响应NotifyReceived事件更新客户端 326
10.3.6处理客户端登录事件 327
10.3.7实现客户端绘图功能 328
10.3.8使用DrawingArea类绘图 330
10.3.9处理Canvas鼠标事件 330
10.3.10实现绘图处理代码 332
10.3.11在多个客户端之间同步绘图数据 335
10.3.12使用CanvasHelper类将绘图数据打包 336
10.3.13使用JsonSerializerHelper转换Json数据 337
10.3.14使用客户端回调功能更新绘图板 339
10.3.15实现聊天记录的发送 342
10.4关键技术讲解 343
10.4.1使用WCF服务的双向通信 343
10.4.2理解WCF服务的线程模型 344
105小结 345
第11章 推箱子游戏(WPF技术实战) 346
11.1推箱子游戏概述 346
11.1.1游戏运行原理 346
11.1.2示例游戏效果预览 347
11.2基于MVVM的游戏逻辑实现 349
11.2.1实现全局控制类Game 349
11.2.2 Game类的属性定义 350
11.2.3加载游戏关卡 352
11.2.4使用SynchronizationContext处理线程同步 354
11.2.5设置游戏完成状态 355
11.2.6与游戏相关的一些方法 356
11.2.7实现关卡类Level 357
11.2.8使用Level类的Load()方法加载关卡数据 359
11.2.9根据地图构建方块 360
11.2.10实现游戏方格对象 361
11.2.11更新方块的内容 363
11.2.12实现游戏方格内容对象 365
11.2.13实现箱子对象 367
11.2.14实现移动、跳转和推送方法 368
11.2.15 Command模式的实现 370
11.2.16 CommandManager类与UI交互 373
11.2.17定义Actor角色类 374
11.2.18实现Actor的单步移动操作 375
11.2.19实现Actor的跳转操作 379
11.3实现游戏用户界面 380
11.3.1使用Expression Design设计图案 381
11.3.2实现用户主界面 382
11.3.3程序启动时加载关卡 384
11.3.4更新游戏界面的显示 384
11.3.5处理方块单击事件 387
11.3.6使用Command模式发送命令请求 387
11.3.7使用MultiDataTrigger改变方块外观 389
11.4关键技术讲解 392
11.4.1理解SynchronizationContext对象 392
11.4.2使用样式触发器动态更改控件外观 394
11.5小结 395
第12章 文件夹同步服务程序(WCF和Windows服务) 396
12.1文件夹同步服务程序概述 396
12.1.1软件实现的功能 396
12.1.2程序使用效果预览 397
12.1.3项目文件夹介绍 399
12.2实现文件同步核心功能 400
12.2.1实现文件夹同步项 400
12.2.2文件夹同步项SyncItem类 401
12.2.3实现后台同步线程 403
12.2.4实现文件夹同步项集合对象 405
12.2.5实现文件比较对象FileInfoEx 406
12.2.6实现文件同步操作列表对象 408
12.2.7实现文件同步Update()方法 410
12.2.8实现文件备份操作 413
12.2.9实现配置类SyncSettings 414
12.2.10从XML文件中加载配置文件 417
12.2.11将配置保存为XML文件 418
12.3文件同步Windows服务技术实现 419
12.3.1创建Windows服务项目 420
12.3.2重载OnStart服务方法 421
12.3.3实现UpdateThread线程方法 423
12.3.4实现服务自安装 425
12.4实现使用命名管道的WCF服务 427
12.4.1定义和实现服务契约 427
12.4.2创建命名管道服务器和客户端 429
12.5实现监控和配置项目 431
12.5.1用户主界面设计 431
12.5.2在主窗口中启动或停止服务 433
12.5.3实现配置服务窗口 434
12.5.4动态安装和卸载服务功能的实现 436
12.5.5保存与删除同步项 438
12.5.6实现添加与编辑同步项窗口 439
12.5.7使用同步项更新用户界面 441
12.5.8验证同步项数据 442
12.6关键技术讲解 443
12.6.1使用WCF开发命名管道程序 443
12.6.2使用程序代码控制Windows服务 444
12.7小结 446
第13章 安全删除小管家(Windows文件管理技术) 447
13.1安全删除小管家概述 447
13.1.1使用SDelete程序安全删除文件 447
13.1.2程序使用预览 449
13.2程序核心功能实现 450
13.2.1使用.NET互操作获取文件信息 451
13.2.2使用ExplorerFileInfo类保存文件信息 453
13.2.3实现应用程序日志类Logger 455
13.2.4 SDelete执行封装类FileCleaner 456
13.2.5调用SDelete执行安全删除 458
13.2.6 用户选项类UserOptions的实现 460
13.2.7保存和加载选项文件 461
13.3用户界面的实现 464
13.3.1实现用户主窗体 464
13.3.2初始化树视图 465
13.3.3使用.NET 4.0任务和延续任务填充TreeView控件 467
13.3.4在后台线程更新TreeView控件 468
13.3.5使用FileSystemWatcher监控文件变更 470
13.3.6使用并行任务获取文件列表 471
13.3.7实现ListView文件拖拽操作 473
13.3.8安全删除所选择的文件 474
13.3.9使用BackgroundWorker控件异步删除文件 475
13.3.10响应BackgroundWorker控件事件 477
13.3.11实现ListView的自定义排序 478
13.3.12实现单实例应用程序 480
13.4理解.NET 4.0并行编程 484
13.5小结 486
第14章 账单管理程序(WPF分层架构实战) 487
14.1账单管理程序概述 487
14.1.1理解软件分层架构 487
14.1.2账单管理程序预览 488
14.2数据访问层的实现 490
14.2.1实现数据访问管理者接口 490
14.2.2定义数据访问XML架构 492
14.2.3实现数据访问实体类 495
14.2.4实现XML数据访问类 498
14.2.5实现单件模式提供单实例访问 500
14.2.6实现XML文件的加载与创建 501
14.2.7使用读取/写入线程模式读取账单数据 503
14.2.8使用读取/写入线程模式新增账单数据 505
14.2.9使用读取/写入线程模式删除账单数据 506
14.2.10使用读取/写入线程模式更新账单数据 507
14.2.11 XML数据访问层设置项 508
14.3业务逻辑层的实现 509
14.3.1实现业务逻辑层契约接口 510
14.3.2实现BillsManager业务逻辑处理类 511
14.3.3实现业务逻辑方法 513
14.4表示层的实现 514
14.4.1定义主用户界面 515
14.4.2定义IDataGridProxy操作代理 517
14.4.3 RecentBillsDataGridProxy类操纵DataGrid 518
14.4.4处理属性与集合变更通知 519
14.4.5更新数据源 520
14.4.6实现账单图表显示功能 522
14.4.7定义ICharting接口 524
14.4.8使用策略模式设置图表显示外观 526
14.4.9动态变更图表类型 528
14.4.10实现账单管理多语言显示功能 529
14.4.11使用ResourceManager设置界面显示语言 532
14.5使用BooleanSwitch和Trace记录程序运行信息 533
14.6小结 536
第15章 用WPF打造幻灯片式图片浏览器(WPF用户界面技术) 537
15.1图片浏览器用户界面设计 537
15.1.1使用Expression Design设计用户界面图形 538
15.1.2定义导航面板用户控件 539
15.1.3导航按钮的布局 540
15.1.4使用MultiBinding控制面板显示 542
15.1.5实现多值转换器 543
15.1.6定义导航按钮命令 545
15.1.7实现图片文件夹选择功能 547
15.1.8使用样式选择器动态改变样式 549
15.1.9使用模板选择器动态改变模板 550
15.1.10定制TreeViewItem的显示样式 551
15.1.11定制TreeViewItem的控件模板 553
15.1.12实现自定义控件InformationBaseCheckBox 554
15.1.13实现图片的幻灯播放效果 556
15.1.14使用Timer类控制播放定时 557
15.1.15设计图像显示区域 560
15.1.16根据BitmapMetadata元数据旋转图像 562
15.2图片浏览器的核心逻辑实现 563
15.2.1使用FileEnumerator类导航图像 563
15.2.2使用AssignFiles()方法加载文件列表 565
15.2.3使用SetFiles()方法加载图像文件列表 566
15.2.4实现图片的导览方法 569
15.2.5添加历史记录图片列表 570
15.2.6实现应用程序配置类Settings 572
15.2.7实例化Settings类 573
15.2.8设置配置文件保存路径 575
15.2.9保存应用程序配置 575
15.2.10实现文件夹信息基类InformationBase 576
15.2.11实现我的电脑信息类MyComputerInformation 578
15.2.12实现驱动器列表类DriveInformation 579
15.2.13实现文件夹信息类DesktopInformation 580
15.3关键技术讲解 582
15.3.1理解WPF的多值绑定 582
15.3.2使用Kent.Boogaart通用转换器 584
15.4小结 586
第3篇 项目案例实战 588
第16章 音乐商店网站(ASP.NETMVC应用) 588
16.1开发站点前的配置 588
16.1.1预览音乐商店网站 588
16.1.2系统架构总览 591
16.1.3系统数据库设计 592
16.1.4系统文件目录结构 594
16.1.5创建母版页和CSS文件 597
16.1.6使用Entity Framework创建实体模型 598
16.2音乐专辑列表实现 600
16.2.1首页控制器实现 600
16.2.2创建首页视图 601
16.2.3浏览音乐流派 602
16.2.4浏览音乐明细信息 604
16.3管理音乐列表 605
16.3.1基于角色的身份验证 606
16.3.2编辑音乐信息 609
16.3.3基于模型的数据验证 614
16.4实现和管理购物车 615
16.4.1添加到购物车功能 615
16.4.2从购物车中移除功能 617
16.4.3提交购物车 619
16.5关键技术讲解 623
16.6小结 623
第17章 学生管理系统(Entity Framework在ASP.NET中的应用) 624
17.1系统分析 624
17.1.1需求分析 624
17.1.2可行性分析 625
17.2系统设计 626
17.2.1系统目标 626
17.2.2系统功能结构 626
17.2.3构建开发环境 627
17.2.4系统预览 627
17.3数据库设计 628
17.3.1数据库表设计 628
17.3.2创建实体数据模型 630
17.3.3浏览实体数据模型关系 632
17.4学生管理功能实现 634
17.4.1创建母版页 634
17.4.2浏览学生列表 635
17.4.3新增学生对象 638
17.5课程管理功能实现 639
17.5.1课程列表功能实现 639
17.5.2添加课程功能实现 642
17.6教师管理功能实现 644
17.6.1管理教师功能实现 644
17.6.2获取相关授课课程 647
17.6.3课程详细和学生成绩列表 648
17.6.4教师课程分配功能实现 649
17.6.5学生统计功能实现 652
17.7关键技术讲解 653
17.7.1具有层次结构的实体模型 653
17.7.2在实体中调用存储过程 654
17.7.3使用动态数据功能验证和格式化数据 655
17.8小结 658
第18章 任务管理系统的设计与实现(Windows Forms和LINQ To Entity实现) 659
18.1系统分析 659
18.1.1需求分析 659
18.1.2可行性分析 660
18.2系统设计 661
18.2.1系统目标 661
18.2.2系统功能结构 661
18.2.3构建开发环境 662
18.2.4系统总览 662
18.3系统数据库设计 663
18.3.1数据库设计 664
18.3.2使用Entity Framework生成实体类 666
18.4任务管理功能的实现 668
18.4.1主窗口设计 668
18.4.2任务管理窗口 670
18.4.3加载任务列表 671
18.4.4格式化DataGridView控件 673
18.4.5加载所选的Task详细信息 675
18.4.6使用CellFormatting事件格式化单元格 675
18.4.7显示任务详细信息 677
18.4.8添加/编辑任务窗口 678
18.4.9使用LINQ to Entity查询任务 680
18.4.10保存任务到数据库 681
18.4.11删除选定的任务 682
18.4.12任务甘特图窗口 683
18.5资源管理功能的实现 685
18.5.1资源管理窗口 685
18.5.2添加资源窗口 686
18.5.3使用ErrorProvider控件验证表单 687
18.5.4保存资源到数据库 689
18.5.5删除指定的资源 690
18.6类别管理功能的实现 690
18.6.1类别管理窗口 691
18.6.2添加类别窗口 692
18.7关键技术讲解 694
18.7.1实现甘特图视图用户控件 694
18.7.2实现任务列表用户控件 699
18.7.3实现自绘制功能的ComboBox控件 700
18.8小结 703