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、使用代码来定义应用程序对象:

public class MyApp : Application
{
 [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;
using System.Windows;
public partial class App : Application
{
 
public App()
 {
  InitializeComponent();
 }
}

这里在后台的代码类定义的时候使用了 partial 关键字,启动时需要显示的窗口可以在 XAML 中指定也可以 Startup事件中打开。另外就是需要在对象的构造函数中调用 InitializeComponent 方法来设置在 XAML 文件所设置的属性。

在使用 XAML 或使用 XAML 和代码来定义应用程序的时候,编译器会自己动程序添加 Main 方法,所以使用这两种方法定义应用程序时,不需要为程序指定 Main 方法。

posted @ 2007-02-09 10:00  匡匡  阅读(2064)  评论(0编辑  收藏  举报