創建一個自定義的Application類


由於每個應用程序必須創建一個Application對象,vs為開發人員提供了模板來減輕開發人員的重復工作。當使用vs創建一個WPF應用程序是,vs會自動創建一個app.xaml文件,

<Application x:Class="WpfApplication8.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApplication8"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
         
    </Application.Resources>
</Application>

聲明代碼中的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 {
        
        /// <summary>
        /// InitializeComponent  方法自動生成的代碼
        /// </summary>
        [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
        }
        
        /// <summary>
        /// Application Entry Point.
        /// </summary>
        /// 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。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM