本書通過豐富且簡單易學的示例,全面講述了面向Windows 10通用應用(UWP)開發相關的知識和技巧。主要內容包括應用項目基本結構、頁面導航、排版布局、控件、數據視圖、圖形、動畫、圖像、多媒體、文件與數據、網絡通信、傳感器和語音技術等。
本書可為對Windows技術感興趣的讀者提供參考,可作為希望從事Windows 10平臺開發的開發人員的入門教程,也可作為普通高校或培訓機構.NET技術相關課程的參考教材,尤其適合具備.NET框架和C#編程語言基礎的讀者使用。
相對于第1版,第2版修訂內容如下:? 手寫與墨跡應用;? 應用預啟動功能及在前臺/后臺之間的切換;? x:Bind綁定標記的使用;? 人臉檢測技術的應用;? 掃描無線網絡;? 遠程激活;? 應用與Cortana的交互。附贈資源如下:? 程序代碼:提供了全書第2章~第15章的完整實例代碼。? 教學視頻:15集教學視頻,涵蓋了全書15章的重要知識點。
序言
第2版前言自首次發布(版本build 10240)以來,Windows 10操作系統已經推送過兩次正式的更新版本,分別是build 10586與build 14393,面向開發者的SDK工具以及API版本也跟隨系統進行了相應的更新,本書是依據正式發布的SDK最新版本(即build 14393,不包含最新的預覽版本)來進行編寫的。本書精心挑選了一些面向開發者的新功能,并結合實例加以闡述,以幫助廣大讀者朋友了解新版SDK和API集。本次修訂將包括以下新內容:手寫與墨跡應用;應用預啟動功能以及在前/后臺之間的切換;x: Bind綁定標記的使用;人臉檢測技術的應用;掃描無線網絡;遠程激活;應用與Cortana的交互。隨著平臺的統一,以及裝機量的急速增長,面向Windows 10的通用應用(UWP)數量也相應增加,而且許多舊版本(主要面向Windows 8/8.1)的應用也進行了相應的替換與更新,以適應新的系統環境。UWP應用可運行于多種Windows設備上,使得移動應用不僅僅局限于手機平臺,而是擴展到包括各種臺式計算機、筆記本計算機、平板電腦以及物聯網等設備上,移動應用的用途與發展空間得到了前所未有的拓展。以目前的形勢來看,Windows 10未來會有更大的發展潛力,對UWP應用的需求也會隨之增長,希望本書內容對廣大Windows開發者會有所幫助,我們也歡迎更多對Windows應用感興趣的開發者參與UWP應用的開發。由于作者的水平有限,本書難以兼顧UWP開發方面的所有知識點。編寫本書的目的僅僅是為初學者提供參考。如果書中出現錯誤或不妥之處,也歡迎讀者朋友批評指正。說明: 本書配套資源下載地址為http://pan.baidu.com/s/lo8k9mqu。
作者2017年1月
第1版前言盡管在Windows 8.1的SDK中已經出現了Universal App(通用應用程序,UAP),但還不能算是真正意義上的通用,只是完成了代碼共享,而面向Windows與Windows Phone的應用仍然是彼此獨立的。Windows 10順利地完成了應用的通用與平臺的統一,UAP模型最終形成。使用面向Windows 10的SDK,開發者只需要開發單個應用程序,就可以運行于各種Windows設備上,例如PC、平板電腦、手機等。開發者無須為多種設備開發單獨的應用。基本內容本書的主題都是圍繞Runtime App開發而展開的,系統地介紹了Runtime App開發的基礎知識,主要涵蓋以下內容:學習前的準備工作;了解UAP項目的結構;頁面與導航;應用頁面的布局與設計;各種控件的使用;數據視圖;圖形繪制與動畫處理;圖像與多媒體處理;啟動與激活;管理文件和數據;常用的網絡通信技術;傳感器的使用;語音技術。光盤內容本書配套的光盤資源中,除了包含書中所有示例的源代碼外,還附帶相關的視頻演示。視頻文件包括以下內容:UAP簡介;應用程序生命周期;頁面與導航;布局控件使用;對話框;后臺任務示例;讀寫本地文件示例;App Service(應用服務)示例;讀取PDF文檔示例;JSON數據處理示例;序列化與反序列化示例;文件關聯示例;OCR識別示例;如何升級應用項目。適用性本書適用于:具備.NET平臺開發基礎知識或熟悉C#語言的讀者;對Windows 10 UAP開發感興趣的讀者;希望加入Windows應用開發陣營的移動應用開發者;作為各類培訓機構或高等院校相關專業的參考教材。如何使用本書本書采用通俗易懂的講解風格,盡量避免出現晦澀難懂的描述與理論說教,降低入門者的理解難度。同時,書中針對每個知識點都附有簡單示例程序。讀者在閱讀本書的時候,可以先閱讀每個知識點的介紹說明,然后將附帶的示例應用運行一遍,先從感性上直觀地觀察一下運行效果。當讀者對知識點和示例有一定了解后,不妨嘗試一下獨立完成書中的示例項目,這樣做可以幫助讀者真正掌握相關的知識和技巧。當讀者了解書中的示例后,也可以進行二次創作,即適當地將示例代碼進行修改,使其變成一個新的示例。如此一來,一個示例可以變成兩個、三個,甚至更多的示例,讀者從中也學會了如何靈活地去運用學到的知識。當然,該做法對于從未進行過任何程序開發的入門者而言,會有些困難。剛開始的時候,讀者可以抱著嘗試的心態去做,不要在乎付出的勞動是否馬上得到回報。欲速則不達!只要堅持不懈,一點一滴地積累和總結,相信每個人有志于步入編程殿堂的人都會收獲頗豐。后續工作學習本書內容后,讀者應該具備獨立開發應用程序的能力。此時讀者可以考慮運用所學知識去參與或開發一些Windows應用; 也可以在本書的學習基礎上,繼續學習面向Windows 10的其他開發方向(如面向物聯網設備的應用開發),進而充分體驗只需一個應用,便可以運行在PC/筆記本、xBox游戲機、平板電腦、手機等多種平臺的樂趣。勘誤與支持由于作者水平有限,書中難免會有一些不妥之處,也可能出現錯誤和不準確的敘述。望讀者朋友不吝指出和反饋。讀者朋友可以通過以下途徑與作者聯系:電子郵件: csdev2012@foxmail.com博客: http: //www.cnblogs.com/tcjiaan微博: http: //weibo.com/tcjiaan鳴謝本書能夠順利完成,離不開所有親朋好友們的鼓舞和支持。感謝眾多網友所給予的肯定,也感謝清華大學出版社給了我一個寫作的機會,感謝盛東亮編輯,在書稿的寫作過程中給予了我極大的幫助和支持。
作者2015年8月
周家安:微軟最有價值專家(MVP),擅長.NET及其相關開發技術,專注于探索簡單實用的編程學習方法。從事過基于Windows CE掃描終端應用的項目開發和Web服務接口的項目開發。長期在博客園等技術社區撰寫Windows相關技術文章,并出版有《深入淺出:Windows 8.1應用開發》《Windows 10 應用開發實戰》《精通C# 5.0》《C#6.0學習筆記從第一行C#代碼到第一個項目設計(全程視頻課堂)》等暢銷圖書。
目錄
叢書序(沈向洋)Ⅰ
第2版前言Ⅲ
第1版前言Ⅴ
第1章準備工作
1.1安裝Visual Studio開發環境
1.2Visual Studio個性設置
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掃描WiFi網絡
第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與應用程序的后臺交互