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