[C#.NET][WPF] Application 事件的生命週期

  • 10817
  • 0
  • 2013-08-16

[C#.NET][WPF] Application 事件的生命週期

開啟一個WPF應用程式後,

image

 

會產生App.xmal與MainWindow1.xmal,App.xmal.cs裡面就是繼承了Application類別

image

 

MainWindow1.xaml裡面裝的是UI畫面的樣式,MainWindow1.xaml.cs 則是裝程式碼邏輯

image

 

Application.StartupUri屬性,可以指定要哪一個xaml先啟定。

image

 


大致上瞭解它裡面擺了什麼東西後,接下來就來研究一下應用程式啟動的生命週期

image

我花了點時間找出Application.Run方法寫在哪裡,當專案編譯後會在WpfApplication1\WpfApplication1\obj\x86\Debug\App.g.cs,我嘗試著對它中斷,但它不會停在那邊,不過沒有這些Code應用程式是沒辦法運行的,未來若是在VS裡找不到的設定,就來這邊找找看。

/// <summary>
/// Application Entry Point.
/// </summary>
[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public static void Main() {
    WpfApplication1.App app = new WpfApplication1.App();
    app.InitializeComponent();
    app.Run();
}

 

然後在App.xaml設計模式下新增事件,雙擊事件名稱就會自動幫你產生程式碼

image

 

加入一些Code來觀察一下

image

 

當完成Startup事件後,應用程式中的切換會觸發,Activated 與 Deactivated 事件;Activated事件會發生在兩個時機,一個是第一次啟動時,另一個是從其它程式時,比如我們用Alt+Tab切換視窗(或滑鼠點擊其它視窗),離開主程式視窗會觸發Deactivated事件,切回來主視窗會觸發Activated事件。

關閉視窗後當然會觸發Exit事件了。正常情況下WPF會自動幫我們呼叫 Application.Shutdown 方法

image

image

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo