アプリケーションの開始から終了までのイベントの発生順を整理しました。
| クラス | イベント | 補足 |
|---|---|---|
| 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コンテナによってやや異なる可能性はありますが。