硬件工具 占存:78.3MB 時(shí)間:2020-10-26
軟件介紹: 驅(qū)動(dòng)精靈是一款集驅(qū)動(dòng)自動(dòng)升級(jí)、驅(qū)動(dòng)備份、驅(qū)動(dòng)還原、驅(qū)動(dòng)卸載、硬件檢測等多功能于一身的專業(yè)驅(qū)...
今天的任務(wù)是建立一個(gè)簡單的Win10 UWP應(yīng)用程序,分析應(yīng)用程序組成結(jié)構(gòu),順帶熟悉一下Visual Studio 2015開發(fā)環(huán)境,并通過添加一個(gè)按鈕初識(shí)Windows應(yīng)用程序事件響應(yīng)機(jī)制。在開始本文之前先回答兩個(gè)網(wǎng)友提出的問題。
1、開發(fā)UWP應(yīng)用Visual Studio需要安裝哪些組件?
保證選中Windows通用應(yīng)用開發(fā)即可。如下圖所示:
▲Visual Studio 2015安裝界面
另外,最新版SDK并不包含在Visual Studio安裝包中,安裝時(shí)需要在線下載。你可以取消勾選工具(1.2)和Windows 10 SDK(10.0.10586),完成安裝后,再從這里下載SDK獨(dú)立安裝包進(jìn)行安裝。
2、關(guān)于Hyper-V虛擬機(jī)支持條件的補(bǔ)充
CPU是否支持虛擬化技術(shù)可通過一款軟件進(jìn)行判斷,詳細(xì)方法可參考《Windows7下XP Mode下載、安裝、設(shè)置完全圖解》。另外除CPU需要支持虛擬化技術(shù)外,還需要使用Windows10專業(yè)版及更高版本操作系統(tǒng)。
創(chuàng)建第一個(gè)Win10 UWP應(yīng)用程序
打開Visual Studio 2015,點(diǎn)擊菜單文件——新建——項(xiàng)目,彈出“新建項(xiàng)目”對(duì)話框,如下圖所示:
▲Visual Studio 2015新建項(xiàng)目對(duì)話框
在模板中選擇Visual C#——Windows——通用,在右側(cè)選擇空白應(yīng)用(通用Windows),修改名稱為Hello或其他,最后點(diǎn)擊確定即可生成一個(gè)空白的UWP通用應(yīng)用。此時(shí)的界面如下圖所示:
▲Visual Studio 2015操作界面
界面頂部為菜單欄和常用操作按鈕,最右側(cè)為解決方案資源管理器窗格,其中列出了項(xiàng)目中的所有文件,雙擊文件后會(huì)在左側(cè)窗格打開,方便我們編輯和修改。右下角為屬性窗格,其中顯示的是我們當(dāng)前選中目標(biāo)的屬性選項(xiàng)。左下角窗格則用于調(diào)試,代碼中的錯(cuò)誤也會(huì)在這里給出提示。
項(xiàng)目文件結(jié)構(gòu)分析
查看解決方案資源管理器窗格,一個(gè)新建的UWP應(yīng)用程序包含如下文件:
▲Visual Studio 2015解決方案資源管理器窗格
? Properties,描述項(xiàng)目屬性,雙擊可打開項(xiàng)目屬性窗口進(jìn)行修改;
? 引用,所有應(yīng)用中需要使用的API都需要在這里進(jìn)行引用,項(xiàng)目默認(rèn)會(huì)把UWP應(yīng)用所需的通用于所有設(shè)備的API都引用進(jìn)來;
? Assets,存放應(yīng)用程序所需的圖片、音視頻文件等資源文件;
? Packages.appxmanifest,應(yīng)用程序清單文件,用于描述應(yīng)用程序的功能和版本等信息的文件。
下面兩項(xiàng)則是應(yīng)用中最重要的兩個(gè)部分,也是我們主要操作的對(duì)象:
? App.xaml與App.xaml.cs
? MainPage.xaml與MainPage.xaml.cs
在項(xiàng)目中他們分別定義了兩個(gè)類,即應(yīng)用程序類(App)和主頁面類(MainPage)。
這是一個(gè)類(對(duì)象)組成的世界
類是面向?qū)ο缶幊讨幸粋€(gè)非常重要的概念,它是從現(xiàn)實(shí)世界中獲得的靈感。比如人類,我們會(huì)用一些屬性(比如職業(yè))或方法(比如具備的技能)對(duì)其進(jìn)行定義,然后根據(jù)定義產(chǎn)生每一個(gè)個(gè)體。在編程中也是同樣的道理,所有事物都通過類進(jìn)行定義,而每個(gè)具體的事物都是根據(jù)類的定義產(chǎn)生的個(gè)體,這叫做類的實(shí)例化對(duì)象。
在面向?qū)ο蟪绦蛟O(shè)計(jì)中,我們需要各種不同的對(duì)象來完成不同的任務(wù),還需要協(xié)調(diào)各個(gè)對(duì)象之間的關(guān)系,并根據(jù)自己的需求增加額外的類(對(duì)象)。
在我們當(dāng)前的項(xiàng)目中App.xaml與App.xaml.cs定義了應(yīng)用程序類,它負(fù)責(zé)維護(hù)應(yīng)用程序的生命周期,明確在應(yīng)用程序打開、掛起(從當(dāng)前切換到另一個(gè)應(yīng)用后)以及掛起后恢復(fù)的情況下需要執(zhí)行哪些操作等。
MainPage.xaml與MainPage.xaml.cs則定義了應(yīng)用程序的主頁面類,前者負(fù)責(zé)描述頁面中包含哪些內(nèi)容,后者主要包括頁面內(nèi)容與用戶之間的交互邏輯。下面我們?cè)谛陆ǖ目瞻讘?yīng)用程序中添加一些內(nèi)容。
初識(shí)事件!
我們常用的Windows應(yīng)用程序都主要以事件進(jìn)行驅(qū)動(dòng)的,比如點(diǎn)擊一個(gè)按鈕會(huì)觸發(fā)按鈕的單擊事件。我們需要做的就是將要執(zhí)行的操作放在對(duì)應(yīng)事件的響應(yīng)函數(shù)中即可,下面我們?cè)谥黜撁嬷刑砑右粋€(gè)按鈕,實(shí)現(xiàn)點(diǎn)擊按鈕后彈出Hello World!提示對(duì)話框。
雙擊MainPage.xaml,相應(yīng)的頁面設(shè)計(jì)器就會(huì)出現(xiàn)在左側(cè)窗格中,如下圖所示:
▲Visual Studio 2015 XAML頁面設(shè)計(jì)視圖
點(diǎn)擊左側(cè)的工具箱,將其中的Button拖到主頁面區(qū)域中即可完成一個(gè)按鈕的添加,如下圖:
選中添加的按鈕,在右下角的屬性窗格中就會(huì)出現(xiàn)按鈕的屬性設(shè)置選項(xiàng),點(diǎn)擊小窗格中右上角的閃電圖形圖標(biāo)即可顯示所有事件列表:
找到其中的click項(xiàng),在右側(cè)文本框中輸入函數(shù)名稱(自定義或留空使用默認(rèn)名稱),雙擊文本框即可為此按鈕添加單擊事件響應(yīng)函數(shù),并自動(dòng)進(jìn)入函數(shù)編輯頁面(即MainPage.xaml.cs文件編輯頁面)。
此時(shí)按照下面的代碼在函數(shù)體(一對(duì)大括號(hào)內(nèi))添加代碼,并注意在函數(shù)名稱前面加上async修飾符。
private async void button_Click(object sender, RoutedEventArgs e)
{
MessageDialog dlg = new MessageDialog("Hello World!");
await dlg.ShowAsync();
}
在復(fù)雜項(xiàng)目中我們需要很多類,而這些類可能由不同的人進(jìn)行編寫,為了不至于產(chǎn)生沖突,使用命名空間進(jìn)行“分類”。由于我們使用的MessageDialog(消息對(duì)話框)類被定義在Windows.UI.Popups命名空間中,因此要使用該類,需要在代碼文件的最上面部分加上下面一行代碼:
using Windows.UI.Popups;
▲為按鈕添加單擊事件響應(yīng)函數(shù)后最終代碼
至此我們已經(jīng)完成了按鈕及其單擊事件處理函數(shù)的添加,點(diǎn)擊窗口頂部工具欄中的綠色播放按鈕即可進(jìn)行編譯運(yùn)行,運(yùn)行后主界面彈出,點(diǎn)擊窗口中的按鈕即可彈出Hello World!提示對(duì)話框,如下圖所示:
程序的入口點(diǎn)在哪里?
下面我們進(jìn)一步分析,學(xué)習(xí)過C++等語言的朋友都知道應(yīng)用程序都有一個(gè)入口點(diǎn),那么這里的UWP應(yīng)用程序也不例外。實(shí)際上在本文所建立的應(yīng)用程序中還存在另一個(gè)類,所謂的入口點(diǎn)就隱藏在這里,下面我們把它揪出來。
點(diǎn)擊菜單中的視圖——類視圖,此時(shí)在右側(cè)即可出現(xiàn)類視圖,展開Hello(命名空間)你就會(huì)看到除了App、MainPage類之外,還有一個(gè)Program類,如下圖所示:
雙擊Program類,會(huì)在左側(cè)打開名為App.g.i.cs的文件(它是隱藏的,由編譯器自動(dòng)生成),部分代碼如下圖所示:
可以看到在Program類中包含一個(gè)名為Main()的方法,這即是整個(gè)應(yīng)用程序的入口點(diǎn)函數(shù)。在前面我們介紹過類的實(shí)例化概念,只有類被實(shí)例化為對(duì)象后才具有意義。不過這里的Program類是一個(gè)靜態(tài)類(前面用static進(jìn)行了修飾),靜態(tài)類的特點(diǎn)是不需要實(shí)例化為對(duì)象就可以使用其中定義的各種方法(當(dāng)然也都是靜態(tài)的),那么Main()函數(shù)就可以直接運(yùn)行。
各個(gè)類或?qū)ο笾g的關(guān)系
繼續(xù)觀察Main()函數(shù)中的語句,可以發(fā)現(xiàn)它實(shí)例化了一個(gè)App類的對(duì)象(new APP();),這也是整個(gè)應(yīng)用中唯一的一個(gè)App類實(shí)例化對(duì)象。有了App對(duì)象,那么程序頁面又是怎樣呈現(xiàn)的呢?(即MainPage類是如何發(fā)揮作用的呢?)
實(shí)際上在UWP應(yīng)用App對(duì)象中包含一個(gè)Window對(duì)象,它提供了對(duì)窗口的各種操作方法。在應(yīng)用程序啟動(dòng)時(shí),又會(huì)將一個(gè)Frame對(duì)象賦給Window對(duì)象(的Content屬性)。在應(yīng)用程序中除了MainPage主頁面外,我們還可以添加其他自定義頁面,而Frame的作用就包括讓應(yīng)用程序窗口內(nèi)容在不同頁面之間進(jìn)行導(dǎo)航。Windows類和Frame類的定義包含在我們引用的程序集中,因此在應(yīng)用程序的類視圖中并沒有顯示這兩個(gè)類。以上類或?qū)ο笾g的關(guān)系在App類的OnLaunched方法中有所體現(xiàn),OnLaunched方法即表示應(yīng)用程序啟動(dòng)時(shí)需要完成的一系列動(dòng)作,主要代碼(在App.xaml.cs文件中)如下:
以上就是對(duì)UWP應(yīng)用程序結(jié)構(gòu)的簡單分析,如果你沒有C#語言基礎(chǔ),看不懂代碼不要緊,現(xiàn)在你只需要對(duì)整個(gè)結(jié)構(gòu)有一個(gè)整體了解。下次我們將對(duì)C#語言的基礎(chǔ)要點(diǎn)進(jìn)行學(xué)習(xí)。