开发基础篇 3
第1章 综述 3
1.1 Windows 10的改变与发展机遇 3
1.1.1 Windows 10新特性 3
1.1.2 Windows 10手机版本 5
1.1.3 Windows 10 PC版本 7
1.1.4 Windows 10物联网版本 8
1.1.5 Windows 10对于开发者的机遇 8
1.2 Windows 10技术框架 9
1.2.1 Windows运行时 10
1.2.2 Windows 10通用应用平台 10
1.2.3 Windows 10通用应用程序开发模型 11
第2章 开发环境和项目工程解析 13
2.1 搭建开发环境 13
2.1.1 开发环境的要求 13
2.1.2 开发工具的安装 13
2.2 创建Windows 10通用应用 14
2.2.1 创建Hello World项目 14
2.2.2 解析Hello World应用 19
2.3 不同平台设备的适配 27
2.3.1 特定平台的API调用 27
2.3.2 界面适配 32
第3章 XAML界面原理和语法 33
3.1 理解XAML 33
3.2 XAML语法 34
3.2.1 命名空间 34
3.2.2 对象元素 36
3.2.3 设置属性 36
3.2.4 附加属性 40
3.2.5 标记扩展 40
3.2.6 事件 41
3.3 XAML的原理 41
3.3.1 XAML页面的编译 41
3.3.2 动态加载XAML 43
3.4 XAML的树结构 46
3.4.1 可视化树 46
3.4.2 Visual TreeHelper类 47
3.4.3 遍历可视化树 48
3.5 框架和页面 50
3.5.1 框架页面结构 50
3.5.2 页面导航 50
开发提高篇 55
第4章 控件编程 55
4.1 系统控件分类 55
4.2 按钮(Button) 58
4.3 文本块(TextBlock) 60
4.4 文本框(TextBox) 63
4.5 边框(Border) 66
4.6 超链接(HyperlinkButton) 68
4.7 单选按钮(RadioButton) 69
4.8 复选框(CheckBox) 70
4.9 进度条(ProgressBar) 72
4.10 滚动视图(ScrollViewer) 74
4.11 滑动条(Slider) 77
4.12 时间选择器(TimePicker)和日期选择器(DatePicker) 79
4.13 枢轴控件(Pivot) 81
4.14 全景视图控件(Hub) 83
4.15 浮出控件(Flyout) 85
4.16 下拉框(ComboBox) 90
4.17 命令栏/菜单栏(CommandBar) 92
4.18 分屏控件(SplitView) 96
第5章 布局管理 99
5.1 布局属性和面板 99
5.1.1 布局的通用属性 99
5.1.2 网格布局(Grid) 105
5.1.3 堆放布局(StackPanel) 111
5.1.4 绝对布局(Canvas) 115
5.1.5 相对布局(RelativePanel) 119
5.1.6 多分辨率的适配布局 120
5.2 布局原理 125
5.2.1 布局的意义 125
5.2.2 布局系统 126
5.2.3 布局系统的重要方法和属性 126
5.2.4 测量和排列的过程 128
5.3 自定义布局规则 131
5.3.1 创建布局类 132
5.3.2 实现测量过程 133
5.3.3 实现排列过程 134
5.3.4 应用布局规则 135
第6章 应用数据 137
6.1 应用设置存储 137
6.1.1 应用设置简介 137
6.1.2 应用设置操作 138
6.1.3 存储容器设置 142
6.1.4 复合设置数据 145
6.2 应用文件存储 147
6.2.1 三种类型的应用文件 147
6.2.2 应用文件和文件夹操作 148
6.2.3 文件Stream和Buffer读写操作 154
6.2.4 应用文件的URI方案 160
6.3 常用的存储数据格式 163
6.3.1 JSON数据序列化存储 163
6.3.2 XML文件存储 170
6.4 安装包文件数据 180
6.4.1 安装包文件访问 180
6.4.2 安装包文件的URI方案 184
第7章 图形绘图 186
7.1 图形基础 186
7.1.1 图形中常用的结构 186
7.1.2 画图相关的类 187
7.1.3 基础的图形形状 189
7.2 Path图形 192
7.2.1 两种Path图形的创建方法 192
7.2.2 使用简单的几何图形来创建Path 192
7.2.3 使用PathGeometry来创建Path 195
7.2.4 使用路径标记语法创建Path 200
7.2.5 使用Path实现自定义图形 204
7.2.6 利用Expression Blend工具创建Path图形 206
7.3 画刷 210
7.3.1 SolidColorBrush画刷 210
7.3.2 LinearGradientBrush画刷 210
7.3.3 ImageBrush画刷 211
7.4 图形裁剪 212
7.4.1 使用几何图形进行剪裁 212
7.4.2 对布局区域进行剪裁 212
7.5 使用位图编程 215
7.5.1 拉伸图像 215
7.5.2 使用RenderTargetBitmap类生成图片 215
7.5.3 存储生成的图片文件 217
第8章 变换特效和三维特效 220
8.1 变换特效 220
8.1.1 变换的原理二维变换矩阵 220
8.1.2 平移变换(TranslateTransform) 222
8.1.3 旋转变换(RotateTransform) 222
8.1.4 缩放变换(ScaleTransform) 224
8.1.5 扭曲变换(SkewTransform) 225
8.1.6 组合变换(TransformGroup) 225
8.1.7 矩阵变换(MatrixTransform) 226
8.2 三维特效 229
8.2.1 三维坐标体系 229
8.2.2 三维旋转 229
8.2.3 三维平移 232
8.2.4 用矩阵实现三维特效 235
第9章 动画编程 239
9.1 动画原理 239
9.1.1 理解动画 239
9.1.2 动画的目标属性 240
9.1.3 动画的类型 241
9.2 线性插值动画 242
9.2.1 动画的基本语法 242
9.2.2 线性动画的基本语法 243
9.2.3 DoubleAnimation实现变换动画 247
9.2.4 ColorAnimation实现颜色渐变动画 248
9.2.5 PointAnimation实现Path图形动画 249
9.3 关键帧动画 251
9.3.1 关键帧动画简介 251
9.3.2 线性关键帧 253
9.3.3 样条关键帧 255
9.3.4 离散关键帧 258
9.4 缓动函数动画 264
9.4.1 缓动函数动画简介 264
9.4.2 BackEase动画 264
9.4.3 BounceEase动画 267
9.4.4 CircleEase动画 269
9.4.5 CubicEase动画 271
9.4.6 ElasticEase动画 272
9.4.7 ExponentialEase动画 274
9.4.8 PowerEase/QuadraticEase/QuarticEase/QuinticEase动画 277
9.4.9 SineEase动画 279
9.5 基于帧动画 280
9.5.1 基于帧动画的原理 281
9.5.2 基于帧动画的应用场景 281
9.5.3 基于帧动画的实现 282
9.6 动画方案的选择 283
9.6.1 帧速率 284
9.6.2 UI线程和构图线程 284
9.6.3 选择最优的动画方案 285
9.7 模拟实现微信的彩蛋动画 288
9.7.1 实现的思路 288
9.7.2 星星创建工厂 288
9.7.3 实现单个星星的动画轨迹 293
9.7.4 封装批量星星飘落的逻辑 296
9.7.5 星星飘落动画演示 298
第10章 样式和模板 300
10.1 样式 300
10.1.1 创建样式 300
10.1.2 样式继承 302
10.1.3 以编程方式设置样式 303
10.1.4 样式文件 305
10.2 模板 307
10.2.1 控件模板(ControlTemplate) 307
10.2.2 ContentControl和ContentPresenter 308
10.2.3 视觉状态管理(VisualStatesManager) 309
10.2.4 数据模板(DataTemplate) 312
10.2.5 Item Template、Content Template和Data Template 313
10.2.6 数据模板的使用 313
10.2.7 读取和更换数据模板 315
第11章 数据绑定 319
11.1 数据绑定的基础 319
11.1.1 数据绑定的原理 319
11.1.2 创建绑定 320
11.1.3 用元素值绑定 322
11.1.4 三种绑定模式 324
11.1.5 更改通知 325
11.1.6 绑定数据转换 327
11.2 绑定集合 332
11.2.1 数据集合 332
11.2.2 绑定列表控件 333
11.2.3 绑定ObservableCollection<T>集合 335
11.2.4 绑定自定义集合 337
第12章 列表编程 342
12.1 列表控件的使用 342
12.1.1 ItemsControl实现最简洁的列表 342
12.1.2 ListBox实现下拉点击刷新列表 345
12.1.3 ListView实现下拉自动刷新列表 348
12.1.4 GridView实现网格列表 351
12.1.5 SemanticZoom实现分组列表 352
12.2 虚拟化技术 358
12.2.1 列表的虚拟化 358
12.2.2 VirtualizingStackPanel、ItemsStackPanel和ItemsWrapGrid虚拟化排列布局控件 360
12.2.3 实现横向虚拟化布局 362
12.2.4 大数据量网络图片列表的异步加载和内存优化 365
第13章 图表编程 370
13.1 动态生成折线图和区域图 370
13.1.1 折线图和区域图原理 370
13.1.2 生成图形逻辑封装 372
13.2 实现饼图控件 376
13.2.1 自定义饼图片形状 376
13.2.2 封装饼图控件 382
13.3 线性报表 387
13.3.1 实现图形表格和坐标轴 387
13.3.2 定义线性数据图形类 394
13.3.3 实现图例 397
13.3.4 实现线性报表 399
13.4 QuickCharts图表控件库解析 401
13.4.1 QuickCharts项目结构分析 402
13.4.2 饼图图表PieChart的实现逻辑 404
13.4.3 连续图形图表SerialChart的实现逻辑 409
开发进阶篇 415
第14章 网络编程 415
14.1 网络编程之HttpWebRequest类 415
14.1.1 HttpWebRequest实现Get请求 415
14.1.2 HttpWebRequest实现Post请求 418
14.1.3 网络请求的取消 420
14.1.4 超时控制 420
14.1.5 断点续传 421
14.1.6 实例演示:RSS阅读器 421
14.2 网络编程之HttpClient类 429
14.2.1 Get请求获取字符串和数据流数据 429
14.2.2 Post请求发送字符串和数据流数据 430
14.2.3 设置和获取Cookie 431
14.2.4 网络请求的进度监控 432
14.2.5 自定义HTTP请求筛选器 432
14.2.6 实例演示:部署IIS服务和实现客户端对服务器的请求 434
14.3 使用Web Service进行网络编程 447
14.3.1 Web Service简介 447
14.3.2 实例演示:手机号码归属地查询 448
14.4 使用WCF Service进行网络编程 450
14.4.1 WCF Service简介 451
14.4.2 创建WCF Service 451
14.4.3 调用WCF Service 454
14.5 推送通知 455
14.5.1 推送通知的原理和工作方式 455
14.5.2 推送通知的分类 457
14.5.3 推送通知的发送机制 459
14.5.4 客户端程序实现推送通知的接收 468
第15章 Socket编程 471
15.1 Socket编程简介 471
15.1.1 Socket相关概念 472
15.1.2 Socket通信的过程 474
15.2 Socket编程之TCP协议 475
15.2.1 StreamSocket介绍及TCP Socket编程步骤 475
15.2.2 连接Socket 477
15.2.3 发送和接收消息 477
15.2.4 TCP协议服务器端监听消息 478
15.2.5 实例:模拟TCP协议通信过程 480
15.3 Socket编程之UDP协议 485
15.3.1 发送和接收消息 485
15.3.2 UDP协议服务器端监听消息 486
15.3.3 实例:模拟UDP协议通信过程 487
第16章 蓝牙和近场通信 491
16.1 蓝牙 491
16.1.1 蓝牙原理 491
16.1.2 Windows 10蓝牙技术简介 492
16.1.3 蓝牙编程类 493
16.1.4 查找蓝牙设备和对等项 494
16.1.5 蓝牙发送消息 495
16.1.6 蓝牙接收消息 496
16.1.7 实例:实现蓝牙程序对程序的传输 496
16.1.8 实例:实现蓝牙程序对设备的连接 500
16.2 近场通信 503
16.2.1 近场通信的介绍 503
16.2.2 近场通信编程类和编程步骤 504
16.2.3 发现近场通信设备 505
16.2.4 近场通信发布消息 506
16.2.5 近场通信订阅消息 507
16.2.6 实例:实现近场通信的消息发布订阅 507
第17章 联系人存储 511
17.1 联系人数据存储 511
17.1.1 ContactStore类和StoredContact类 511
17.1.2 联系人新增 513
17.1.3 联系人查询 515
17.1.4 联系人编辑 515
17.1.5 联系人删除 516
17.1.6 联系人头像 516
17.1.7 实例演示:联系人存储的使用 518
17.2 联系人编程技巧 523
17.2.1 vCard的运用 523
17.2.2 RemoteID的运用 527
第18章 多任务 530
18.1 后台任务 530
18.1.1 后台任务的原理 530
18.1.2 后台任务的资源限制 531
18.1.3 后台任务的基本概念和相关的类 532
18.1.4 后台任务的实现步骤和调试技巧 535
18.1.5 使用MaintenanceTrigger实现Toast通知 543
18.1.6 使用后台任务监控锁屏Raw消息的推送通知 546
18.1.7 后台任务的开销、终止原因和完成进度汇报 546
18.2 后台文件传输 553
18.2.1 后台文件传输简介 553
18.2.2 后台文件下载步骤 553
18.2.3 后台文件下载的实例编程 555
18.2.4 后台文件上传的实现 563
第19章 应用间通信 565
19.1 启动系统内置应用 565
19.1.1 启动内置应用的URI方案 565
19.1.2 实例演示:打开网页、拨打电话和启动设置页面 566
19.2 URI关联的应用 569
19.2.1 注册URI关联 569
19.2.2 监听URI 570
19.2.3 启动URI关联的应用 571
19.2.4 实例演示:通过URI关联打开不同的应用页面 571
19.3 文件关联的应用 574
19.3.1 注册文件关联 574
19.3.2 监听文件启动 575
19.3.3 启动文件关联应用 575
19.3.4 实例演示:创建一个.log后缀的文件关联应用 576
第20章 多媒体 581
20.1 MediaElement对象 581
20.1.1 MediaElement类的属性、事件和方法 582
20.1.2 MediaElement的状态 583
20.2 本地音频播放 584
20.3 网络音频播放 586
20.4 使用SystemMediaTransportControls控件播放音乐 589
20.5 本地视频播放 591
20.6 网络视频播放 594
第21章 地理位置 599
21.1 定位和地图 599
21.1.1 获取定位信息 599
21.1.2 在地图上显示位置信息 601
21.1.3 跟踪定位的变化 603
21.1.4 后台定位 607
21.2 地理围栏 613
21.2.1 设置地理围栏 614
21.2.2 监听地理围栏通知 614
第22章 C#与C++混合编程 619
22.1 C++/CX语法 619
22.1.1 命名空间 619
22.1.2 基本的类型 620
22.1.3 类和结构 621
22.1.4 对象和引用计数 624
22.1.5 属性 624
22.1.6 接口 625
22.1.7 委托 626
22.1.8 事件 628
22.1.9 自动类型推导auto 629
22.1.10 Lambda表达式 629
22.1.11 集合 630
22.2 Windows运行时组件 631
22.2.1 在项目中使用Windows运行时组件 631
22.2.2 Windows运行时组件异步接口的封装 635
22.3 使用标准C++ 640
22.3.1 标准C++与C++/CX的类型自动转换 640
22.3.2 标准C++与C++/CX的字符串的互相转换 640
22.3.3 标准C++与C++/CX的数组的互相转换 641
22.3.4 在Windows运行时组件中使用标准C++ 642
开发实例篇 649
第23章 应用实战:Bing在线壁纸 649
23.1 应用实现的功能 649
23.2 获取Bing壁纸的网络接口 649
23.3 壁纸请求服务的封装 651
23.4 应用首页的设计和实现 656
23.5 手机和平板不同分辨率的适配 660
23.6 壁纸列表详情和操作的实现 662
第24章 应用实战:记账本 667
24.1 记账本简介 667
24.2 对象序列化存储 667
24.3 记账本首页磁贴设计 670
24.4 添加一笔收入和支出 675
24.5 月报表 683
24.6 年报表 687
24.7 查询记录 690
24.8 分类图表 692