nuits.jp blog

C#, Xamarin, WPFを中心に書いています。Microsoft MVP for Development Technologies。

WPFオブジェクトのライフサイクル

アプリケーションの開始から終了までのイベントの発生順を整理しました。

クラス イベント 補足
Application コンストラクタ
Application Startup
Application Navigating
MainWindow コンストラクタ
MainWindowViewModel コンストラクタ
MainWindow DataContextChanged
MainWindow Initialized
App Activated
MainWindow Loaded
MainWindow Activated ActivatedとLoadedに注意が必要。WindowのフォーカスのON/OFFでActivatedとDeactivatedイベントが発生するが、LoadedはWindowオブジェクト生成初回のみ発生する。
MainWindow Closing
MainWindow Deactivated
App Deactivated
MainWindow Closed
App Exit

ViewModelに関しては、どう設定するかによって大きく変わるので注意が必要です。ここでは以下のようにXAMLに記述しています。

<Window x:Class="Kamishibai.Wpf.Demo.MainWindow"
        ...>
    <Window.DataContext>
        <local:MainWindowViewModel/>
    </Window.DataContext>

DIコンテナからロードする場合も、代替同様になるでしょう。DIコンテナによってやや異なる可能性はありますが。