由于每个应用程序必须创建一个Application对象,vs为开发人员提供了模板来减轻开发人员的重复工作。当使用vs创建一个WPF应用程序是,vs会自动创建一个app.xaml文件,
声明代码中的startupUri属性用于指定将要作为应用程序主窗口的XAML文件,这个app.xaml文件同样也具有一个后置文件,与XAML代码想关联的后置文件
派生自XAML根元素的派生类。因此从app.xaml.cs中可以看到,app类是一个派生自Application类的派生类,但是让人好奇的是,后置代码并没有发现Main方法,也没有看到实例化
Application类的代码。
与MainWindow.xaml一样,vs自动为app.xaml产生了一个局部类名为App.g.cs。在应用程序编译后,可以从obj\Debug文件夹下找到这个文件。App.g.cs的源代码如下
public partial class App : System.Windows.Application { ////// InitializeComponent 方法自动生成的代码 /// [System.Diagnostics.DebuggerNonUserCodeAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] public void InitializeComponent() { #line 5 "..\..\App.xaml" this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative); #line default #line hidden } ////// Application Entry Point. /// /// vs足底报告生成的应用程序的入口点 [System.STAThreadAttribute()] [System.Diagnostics.DebuggerNonUserCodeAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")] public static void Main() { //创建一个派生子Application类的实例 WpfApplication8.App app = new WpfApplication8.App(); app.InitializeComponent(); app.Run(); } }}
在这个自动生成的局部类,可以看到产生了一个Main方法来作为应用程序的入口点,Main方法首先实例化一个App对象,紧接着调用了静态的InitializeComponent方法。在该方法中,只是为了Application类设置了Startup属性,为该属性
赋予一个相对路径的XAML文件的URI。