メイン画面を起動する前に独自のダイアログを表示したくて調べた。
ログイン画面を表示する時なんかが多いかもしれない。
問題点
App.xaml.csでMainWindowを表示する前にダイアログを表示するコードを書いて実行すると,ダイアログを閉じたらアプリケーションが終了してしまい,MainWindowが開きません。
この対策についてメモしておく。
対策1 ShutdownModeを設定する
アプリケーションの実行停止モードを設定してダイアログをとじてもアプリが終了しないようにしてしまう方法。
ShutdownMode | 説明 |
OnLastWindowClose[規定値] | アプリケーションの最後のウィンドウを閉じると暗黙的に終了 |
OnMainWindowClose | Application.MainWindowプロパティに割り当てられているウィンドウが閉じた時暗黙的に終了 |
OnExplicitShutdown | 手動でShutdown();するまで終了しない |
ShutdownMode公式ドキュメント→Application.ShutdownMode プロパティ (System.Windows) | Microsoft Docs
事前にMainWindowプロパティにメイン画面を登録できない & 元の値に戻さなければならない都合が合って以下のような書き方になっているが,参考までに載せておく。
var dialog = new SampleDialog(); var temp = Current.ShutdownMode; Current.ShutdownMode = ShutdownMode.OnExplicitShutdown; // memo: 一時的な変更 if (dialog.ShowDialog() != true) { this.Shutdown(); } Current.ShutdownMode = temp; // memo: 元に戻す
ではまた。
もぐも