App.xaml是應用的聲明起始點。在VS新建一個WPF應用,就能自動生成一個App.xaml,同時包含了後臺代碼文件App.xaml.cs。這兩個文件都是局部類,和Window類非常相似,讓你能夠使用標記語言和後臺代碼。
App.xaml.cs擴展了應用類,它是WPF窗口應用的中心類。.NET首先進入這個類的起始指令,從這裏啓動預想的窗口或者網頁。同時這裏訂閱了重要的應用事件,如應用啓動、未處理的異常等等。
App.xaml最常使用的特性是定義全局資源,它們可能會在整個應用裏面被使用或者訪問,如全局樣式。
App.xaml結構
自動生成的App.xaml代碼如下:
<Application x:Class="WpfTutorialSamples.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
主要來看StartupUri屬性,它指示了啓動應用的時候,加載哪個窗口或網頁。在這裏將加載MainWindow.xaml。可以通過替換來使用不同的窗體。
有時候你想獲取更多的控制,如窗口如何顯示,什麼時候顯示。其實可以刪去StartupUri及其值,然後在後臺代碼裏實現。後面會講。
App.xaml.cs結構
<span style="font-size:14px;">using System;
using System.Collections.Generic;
using System.Windows;
namespace WpfTutorialSamples
{
public partial class App : Application
{
}
}</span>
從上面可以看到這個類是如何擴展應用類的,它允許我們在應用層填充內容。例如,可以訂閱啓動事件,用來指定啓動窗口。<span style="font-size:14px;"><Application x:Class="WpfTutorialSamples.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="Application_Startup">
<Application.Resources></Application.Resources>
</Application></span>
StartupUri被一個啓動事件的訂閱所取代(通過XAML訂閱事件會在後面將到)。在後臺代碼使用事件,如下:<span style="font-size:14px;">using System;
using System.Collections.Generic;
using System.Windows;
namespace WpfTutorialSamples
{
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
// Create the startup window
MainWindow wnd = new MainWindow();
// Do stuff here, e.g. to the window
wnd.Title = "Something else";
// Show the window
wnd.Show();
}
}
}</span>
與前面使用StartupUri屬性相比,這裏可以在顯示啓動窗口之前對它進行操作,例如改變標題。儘管不是很常用,這可以訂閱事件,或者顯示一個啓動界面。當你擁有所有的控制權,就有了很多種可能。在後面的章節我們會深入研究。