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