微信扫码下载

编辑推荐

  相对于第1版,第2版修订内容如下:  手写与墨迹应用;  应用预启动功能及在前台/后台之间的切换;  x:Bind绑定标记的使用;  人脸检测技术的应用;  扫描无线网络;  远程激活;  应用与Cortana的交互。  附赠资源如下:  程序代码:提供了《Windows 10应用开发实战(第2版)》第2章~第15章的完整实例代码。  教学视频:15集教学视频,涵盖了《Windows 10应用开发实战(第2版)》15章的重要知识点。

内容简介

  《Windows10应用开发实战(第2版)》通过丰富且简单易学的示例,全面讲述了面向Windows10通用应用(UWP)开发相关的知识和技巧。主要内容包括应用项目基本结构、页面导航、排版布局、控件、数据视图、图形、动画、图像、多媒体、文件与数据、网络通信、传感器和语音技术等。

  《Windows 10应用开发实战(第2版)》可为对Windows技术感兴趣的读者提供参考,可作为希望从事Windows10平台开发的开发人员的入门教程,也可作为普通高校或培训机构.NET技术相关课程的参考教材,尤其适合具备.NET框架和C#编程语言基础的读者使用。


作者简介

  周家安,微软*有价值专家(MVP),擅长.NET及其相关开发技术,专注于探索简单实用的编程学习方法。从事过基于WindowsCE扫描终端应用的项目开发和Web服务接口的项目开发。长期在博客园等技术社区撰写Windows相关技术文章,并出版有《深入浅出:Windows8.1应用开发》《Windows10应用开发实战》《精通C#5.0》《C#6.0学习笔记——从*一行C#代码到*一个项目设计(全程视频课堂)》等畅销图书。

目录

丛书序(沈向洋)Ⅰ

第2版前言Ⅲ

第1版前言Ⅴ

第1章准备工作

1.1安装VisualStudio开发环境

1.2VisualStudio个性设置

1.2.1选择颜色主题

1.2.2设置字体

1.2.3设置启动界面

1.2.4设置项目的默认存放路径

1.2.5用好“快速启动”功能

1.3通用应用

1.3.1新的XAML设计器

1.3.2如何使用特定平台的API

1.4使用帮助文档和示例代码

第2章了解应用程序项目

2.1应用程序项目的文件结构

2.2应用程序入口点

2.3应用程序生命周期

2.3.1Application类

2.3.2挂起与恢复

2.3.3处理前台与后台之间的切换

2.3.4预启动

2.4清单文件

第3章页面导航

3.1实现导航

3.2导航事件

3.3传递导航参数

3.4管理导航记录

3.5处理手机上的“后退”键

3.6缓存页面实例

3.7保存和恢复导航状态

第4章排版布局

4.1网格布局

4.2栈布局

4.3按坐标布局

4.4Z顺序

4.5对齐方式

4.6边距

4.7自适应布局

4.8自适应触发器

第5章控件

5.1Control类

5.1.1控件模板

5.1.2控件状态

5.1.3获取控件的状态列表的技巧

5.2路由事件

5.3按钮

5.3.1Button

5.3.2RepeatButton

5.3.3HyperlinkButton

5.4单选框与多选框

5.5呈现静态文本

5.5.1TextBlock

5.5.2RichTextBlock

5.5.3处理文本溢出

5.5.4嵌入自定义字体

5.6显示图像

5.7文本输入控件

5.7.1TextBox

5.7.2RichEditBox

5.8选取日期和时间

5.9ViewBox控件

5.10报告进度

5.10.1ProgressBar

5.10.2ProgressRing

5.11对话框

5.11.1MessageDialog

5.11.2ContentDialog

5.12上下文菜单

5.12.1PopupMenu

5.12.2MenuFlyout

5.13应用程序栏

5.14命令

5.15开关控件

5.16滑动条

5.17用户控件

5.18自定义控件

5.19WebView控件

5.19.1呈现HTML内容

5.19.2执行脚本函数

5.19.3捕捉HTML内容

5.20SplitView控件

5.21墨迹处理

第6章数据视图

6.1数据绑定

6.1.1绑定方向

6.1.2Binding类

6.1.3Binding扩展标记

6.1.4数据绑定的继承性

6.1.5转换器

6.1.6更改通知

6.2ItemsControl控件

6.3DisplayMemberPath与SelectedValuePath

6.4数据模板

6.4.1自定义数据模板

6.4.2数据模板选择器

6.5分组视图

6.6自定义数据项的布局

6.7缩放视图

6.8Pivot与Hub

6.8.1Pivot控件示例

6.8.2Hub控件示例

6.9FlipView控件

6.10增量加载

6.11直接绑定到方法

第7章图形

7.1构造图形的基础元素

7.2画刷

7.2.1单色画刷(SolidColorBrush)

7.2.2线性渐变画刷(LinearGradientBrush)

7.2.3图像画刷(ImageBrush)

7.3基本图形

7.3.1直线(Line)

7.3.2椭圆(Ellipse)

7.3.3矩形(Rectangle)

7.3.4折线(Polyline)

7.3.5多边形(Polygon)

7.4路径

7.4.1LineGeometry

7.4.2RectangleGeometry

7.4.3EllipseGeometry

7.4.4PathGeometry

7.4.5GeometryGroup

7.5二维变换

7.5.1平移(TranslateTransform)

7.5.2旋转(RotateTransform)

7.5.3缩放(ScaleTransform)

7.5.4复合变换(CompositeTransform)

7.5.5使用相对定位的变换原点

7.6三维透视

7.7三维变换

第8章动画

8.1动画概要

8.1.1时间线

8.1.2演示图板(Storyboard)

8.1.3动画分类

8.1.4如何与动画时间线关联

8.2控制动画播放行为

8.3简单动画

8.4关键帧动画

8.5属性路径

第9章图像

9.1用于UI的图像加载

9.2将可视化对象呈现为图像

9.3可写位图(WriteableBitmap)

9.4图像的解码与编码

9.4.1图像解码

9.4.2图像编码

9.5图像处理

9.6人脸检测

第10章多媒体

10.1MediaElement与多媒体播放

10.2后台音频

10.3转码

10.4多媒体捕捉

10.5捕捉屏幕

第11章启动与激活

11.1Launcher组件

11.2自定义文件关联

11.3协议激活

11.4激活远程系统上的应用

第12章文件与数据

12.1文件与目录

12.1.1文件/目录操作的相关类型

12.1.2读写本地文件

12.1.3FileIO与PathIO

12.1.4DataWriter与DataReader

12.1.5访问特殊目录

12.2应用设置

12.3访问可移动存储

12.4文件与目录选择器

12.5StorageApplicationPermissions类

12.6XML与JSON数据处理

12.6.1读写XML

12.6.2操作JSON数据

12.7数据共享

12.7.1剪贴板

12.7.2向其他应用程序共享数据

12.7.3接收共享数据

12.8应用程序服务

第13章网络通信

13.1Socket通信

13.1.1基于UDP协议的通信

13.1.2通过TCP协议传输数据

13.2访问Web服务

13.3HTTP协议通信

13.4后台传输

13.5推送通知

13.6访问RSS资源

13.7扫描WiFi网络

第14章传感器与地理定位

14.1设备坐标

14.2传感器的使用方法

14.3罗盘

14.4加速度传感器

14.5磁倾仪

14.6陀螺仪

14.7光感器

14.8方向传感器

14.9高度计

14.10气压计

14.11获取电池信息

14.12获取地理位置

第15章语音技术

15.1语音识别

15.2自定义语音识别规则

15.2.1自定义SGRS文件

15.2.2短语列表约束

15.3语音指令

15.4语音朗读

15.5Cortana与应用程序的后台交互

精彩书摘

  第3章页面导航

  通过上一章的学习,读者已经了解到应用程序的基本结构,以及如何对应用程序生命周期内各个阶段进行处理,本章将向读者讲述与页面导航相关的内容。

  与网站应用程序相似,UAP应用程序也会划分为多个页面,不同的页面将向用户呈现不同的内容。例如,一个闹钟应用程序可能存在以下页面:浏览页面用于列出用户已经创建的闹钟清单以及每条闹钟信息的状态;编辑页面可用于填写新闹钟信息或修改现有闹钟的信息;设置页面允许用户对应用程序进行个性化选择,如自定义闹钟铃声等。

  可见,合理使用页面导航,能够增强应用程序的层次性和逻辑表现能力。本章内容包括:

  使用Frame类实现页面导航;

  导航并传递参数;

  管理导航记录;

  处理手机上的“回退”按钮事件;

  理解页面缓存;

  管理页面的导航状态。

  3.1实现导航

  Frame类派生自ContentControl类,这说明它是一个内容控件。与其他内容控件不同的是,Frame具有导航功能,因此,Frame类的内容属性所承载的通常是应用程序页面的实例,而实现页面导航是通过调用Navigate方法来完成的,该方法有多个重载,比较常用的有以下两个重载版本:

  publicboolNavigate(System.TypesourcePageType);

  publicboolNavigate(System.TypesourcePageType,objectparameter);

  其中,sourcePageType参数是必须的,类型为Type,即要导航的目标页面的类型。第二个重载版本有一个parameter参数,可为任意类型,表示导航参数,也就是在导航到目标页面时传递的附加信息,目标页面可以根据parameter参数来做出相应处理,本章后面会向读者详细说明。

  每个应用程序页面由Page类表示,但通常不会直接使用Page类,在向应用程序项目添加新页面时都会从Page类派生出一个子类,即自定义页面类,Navigate方法中的sourcePageType参数则指定为自定义页面类的Type。如果导航顺利完成,Navigate方法返回True,否则返回False。如果导航失败,会引发NavigationFailed事件。

  下面示例将演示如何通过Frame对象来实现页面导航。

  应用程序项目包含两个页面:FirstPage和SecondPage。应用程序运行后将导航到FirstPage页,接着在FirstPage页上单击页面下方的命令按钮进入SecondPage页。

  首先将App类的代码做如下修改:

  publicsealedpartialclassApp:Application

  {

  publicApp()

  {

  this.InitializeComponent();

  }

  ///

  ///用于导航的Frame对象

  ///

  publicFrameRootFrame{get;privateset;}

  protectedoverridevoidOnLaunched(LaunchActivatedEventArgsargs)

  {

  //实例化Frame对象

  RootFrame=newFrame();

  //将当前Frame作为窗口的内容

  Window.Current.Content=RootFrame;

  //导航到页面一

  RootFrame.Navigate(typeof(FirstPage));

  //激活当前窗口

  Window.Current.Activate();

  }

  }

  代码先实例化一个Frame对象,然后将它作为当前窗口的内容,紧接着调用Navigate方法导航到FirstPage页。

  在FirstPage中,通过处理命令按钮事件导航到SecondPage页,代码如下:

  privatevoidOnNext(objectsender,RoutedEventArgse)

  {

  this.Frame.Navigate(typeof(SecondPage));

  }

  由于Page类公开了一个Frame属性,可以获取负责导航的Frame实例的引用,因此上面代码通过Frame属性得到参与导航的Frame对象,然后调用其Navigate方法导航到SecondPage页。

  应用程序的运行结果如图31所示。

  图31使用Frame类进行页面导航

  完整的示例代码请参考\第3章\Example_1。

  3.2导航事件

  在页面导航过程中,应用程序会引发一系列事件,在需要的时候,开发者应该处理这些事件。

  对Frame而言,在导航到目标页面之前会引发Navigating事件,此时可以做必要的检查,如果希望取消导航,可以设置事件参数NavigatingCancelEventArgs的Cancel属性为True来阻止导航;当Frame对象顺利导航到目标页面后,会发生Navigated事件。通过事件参数对象的SourcePageType属性可以获得目标页面的类型,即传递给Navigate方法的sourcePageType参数的值。

  对于页面来说,当导航进入页面后,会调用OnNavigatedTo方法;当导航即将离开页面时,OnNavigatingFrom方法会被调用,同样,可以通过设置方法参数e的Cancel属性为True来取消导航;当导航已经离开当前页面后会调用OnNavigatedFrom方法。以上三个方法都是虚方法,开发者在派生类中可以重写它们并加入自定义处理代码。

  那么,如何知道上面所述的几个事件的发生顺序呢?接下来将通过一个示例来向读者展示各个导航事件的引发顺序。

  在应用程序项目中添加三个页面,分别命名为Page1、Page2和Page3。三个页面的结构相似,所以此处只介绍Page1页面的结构,其描述界面布局的XAML代码如下:

  

  页面中仅用一个TextBlock元素来显示标识文本,以方便在运行阶段进行观察。

  本示例程序主窗口的内容对象并非Frame实例,而是MainPage页面,然后将负责导航的Frame对象放置在MainPage页面中。MainPage页面的XAML如下:

  Page1

  Page2

  Page3

  

  ……











前言/序言

  第2版前言

  自首次发布(版本build10240)以来,Windows10操作系统已经推送过两次正式的更新版本,分别是build10586与build14393,面向开发者的SDK工具以及API版本也跟随系统进行了相应的更新,《Windows 10应用开发实战(第2版)》是依据正式发布的SDK最新版本(即build14393,不包含最新的预览版本)来进行编写的。

  《Windows 10应用开发实战(第2版)》精心挑选了一些面向开发者的新功能,并结合实例加以阐述,以帮助广大读者朋友了解新版SDK和API集。

  本次修订将包括以下新内容:

  手写与墨迹应用;

  应用预启动功能以及在前/后台之间的切换;

  x:Bind绑定标记的使用;

  人脸检测技术的应用;

  扫描无线网络;

  远程激活;

  应用与Cortana的交互。

  随着平台的统一,以及装机量的急速增长,面向Windows10的通用应用(UWP)数量也相应增加,而且许多旧版本(主要面向Windows8/8.1)的应用也进行了相应的替换与更新,以适应新的系统环境。UWP应用可运行于多种Windows设备上,使得移动应用不仅仅局限于手机平台,而是扩展到包括各种台式计算机、笔记本计算机、平板电脑以及物联网等设备上,移动应用的用途与发展空间得到了前所未有的拓展。

  以目前的形势来看,Windows10未来会有更大的发展潜力,对UWP应用的需求也会随之增长,希望《Windows 10应用开发实战(第2版)》内容对广大Windows开发者会有所帮助,我们也欢迎更多对Windows应用感兴趣的开发者参与UWP应用的开发。

  由于作者的水平有限,《Windows 10应用开发实战(第2版)》难以兼顾UWP开发方面的所有知识点。编写《Windows 10应用开发实战(第2版)》的目的仅仅是为初学者提供参考。如果书中出现错误或不妥之处,也欢迎读者朋友批评指正。

  说明:《Windows 10应用开发实战(第2版)》配套资源下载地址为http://pan.baidu.com/s/lo8k9mqu。

  作者2017年1月

  第1版前言

  尽管在Windows8.1的SDK中已经出现了UniversalApp(通用应用程序,UAP),但还不能算是真正意义上的通用,只是完成了代码共享,而面向Windows与WindowsPhone的应用仍然是彼此独立的。

  Windows10顺利地完成了应用的通用与平台的统一,UAP模型最终形成。使用面向Windows10的SDK,开发者只需要开发单个应用程序,就可以运行于各种Windows设备上,例如PC、平板电脑、手机等。开发者无须为多种设备开发单独的应用。

  基本内容

  《Windows 10应用开发实战(第2版)》的主题都是围绕RuntimeApp开发而展开的,系统地介绍了RuntimeApp开发的基础知识,主要涵盖以下内容:

  学习前的准备工作;

  了解UAP项目的结构;

  页面与导航;

  应用页面的布局与设计;

  各种控件的使用;

  数据视图;

  图形绘制与动画处理;

  图像与多媒体处理;

  启动与激活;

  管理文件和数据;

  常用的网络通信技术;

  传感器的使用;

  语音技术。

  光盘内容

  《Windows 10应用开发实战(第2版)》配套的光盘资源中,除了包含书中所有示例的源代码外,还附带相关的视频演示。视频文件包括以下内容:

  UAP简介;

  应用程序生命周期;

  页面与导航;

  布局控件使用;

  对话框;

  后台任务示例;

  读写本地文件示例;

  AppService(应用服务)示例;

  读取PDF文档示例;

  JSON数据处理示例;

  序列化与反序列化示例;

  文件关联示例;

  OCR识别示例;

  如何升级应用项目。

  适用性

  《Windows 10应用开发实战(第2版)》适用于:

  具备.NET平台开发基础知识或熟悉C#语言的读者;

  对Windows10UAP开发感兴趣的读者;

  希望加入Windows应用开发阵营的移动应用开发者;

  作为各类培训机构或高等院校相关专业的参考教材。

  如何使用《Windows 10应用开发实战(第2版)

  《Windows 10应用开发实战(第2版)》采用通俗易懂的讲解风格,尽量避免出现晦涩难懂的描述与理论说教,降低入门者的理解难度。同时,书中针对每个知识点都附有简单示例程序。读者在阅读《Windows 10应用开发实战(第2版)》的时候,可以先阅读每个知识点的介绍说明,然后将附带的示例应用运行一遍,先从感性上直观地观察一下运行效果。当读者对知识点和示例有一定了解后,不妨尝试一下独立完成书中的示例项目,这样做可以帮助读者真正掌握相关的知识和技巧。

  当读者了解书中的示例后,也可以进行“二次创作”,即适当地将示例代码进行修改,使其变成一个新的示例。如此一来,一个示例可以变成两个、三个,甚至更多的示例,读者从中也学会了如何灵活地去运用学到的知识。当然,该做法对于从未进行过任何程序开发的入门者而言,会有些困难。刚开始的时候,读者可以抱着尝试的心态去做,不要在乎付出的劳动是否马上得到回报。“欲速则不达”!只要坚持不懈,一点一滴地积累和总结,相信每个人有志于步入编程殿堂的人都会收获颇丰。

  后续工作

  学习《Windows 10应用开发实战(第2版)》内容后,读者应该具备独立开发应用程序的能力。此时读者可以考虑运用所学知识去参与或开发一些Windows应用;也可以在《Windows 10应用开发实战(第2版)》的学习基础上,继续学习面向Windows10的其他开发方向(如面向物联网设备的应用开发),进而充分体验只需一个应用,便可以运行在PC/笔记本、xBox游戏机、平板电脑、手机等多种平台的乐趣。

  勘误与支持

  由于作者水平有限,书中难免会有一些不妥之处,也可能出现错误和不准确的叙述。望读者朋友不吝指出和反馈。

  鸣谢

  《Windows 10应用开发实战(第2版)》能够顺利完成,离不开所有亲朋好友们的鼓舞和支持。感谢众多网友所给予的肯定,也感谢清华大学出版社给了我一个写作的机会,感谢盛东亮编辑,在书稿的写作过程中给予了我极大的帮助和支持。

  作者2015年8月


其他推荐