標籤:原始碼 ali present 開發 span dde res debugger 應用程式
由於每個應用程式必須建立一個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。
建立一個自訂的Application類