WPF:应用程序(Application)对象
Application 类表示一个 WPF 应用程序,此对象用来启动应用程序和关闭应用程序等相关的服务,每一个WPF 应用程序都有一个相关的 Application 对象。
在 WPF 中定义一个 Application 对象有三种方法,一种是使用 XAML 来定义,一种是使用代码来定义,最后一种就是使用 XAML 和代码共同定义 Application 对象。
1、使用 XAML 来定义 Application 对象:
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
上面的代码断定义一个从 Application 对象继承的应用程序对象,上面的代码只是定义一个应用程序对象,并没有设置启动时所要显示的内容,所以当此应用程序启动后,将看不到任何的信息。
我可以在 XAML 中使用 StartupUri 来指定在应用程序启动时需要显示的内容,如:
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="HelloWorld.xaml" />
上面的代码指示在应用程序启动后显示 HelloWorld.xaml 文件所定义的内容,HelloWorld.xaml 文件定义的内容中,根元素定义的对象必须是以下几种类型:Window、NavigationWindow、Page、UserControl、FlowDocument、PageFunction,当定义的类型为 Page、UserControl、FlowDocument、PageFunction 时,应用程序将创建一个 NavigationWindow 窗口,并在此窗口加载 StartupUri 指定的内容
2、使用代码来定义应用程序对象:
{
[STAThread]
static void Main()
{
MyApp app = new MyApp();
app.Startup += app_Startup;
app.Run();
}
static void app_Startup(object sender, StartupEventArgs e)
{
// 在这里显示一个窗口
}
}
上面的代码定义应用程序对象 MyApp,此对象从 Application 类继承,当使用纯代码定义应用程序对象的时候,需要为应用程序提供一个程序的入口点 Main 方法,而且此方法必须使用 STAThread 属性标识,然后在 Startup 事件中显示一个窗口,应用程序对象将自己使用第一个窗口作为应用程序的主窗口,还要可以使用 Application 对象的 Windows 获取当前应用程序所有实例化的窗口。
3、使用 XAML 和代码共同定义一个 Application 对象:
XAML:
<Application
x:Class="App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
代码:
using System.Windows;
public partial class App : Application
{
public App()
{
InitializeComponent();
}
}
这里在后台的代码类定义的时候使用了 partial 关键字,启动时需要显示的窗口可以在 XAML 中指定也可以 Startup事件中打开。另外就是需要在对象的构造函数中调用 InitializeComponent 方法来设置在 XAML 文件所设置的属性。
在使用 XAML 或使用 XAML 和代码来定义应用程序的时候,编译器会自己动程序添加 Main 方法,所以使用这两种方法定义应用程序时,不需要为程序指定 Main 方法。