Caliburn.Microは初めてですが、アプリケーションでユーザーのログイン/ログアウトサイクルを処理するための最良の方法は何でしょうか。LoginViewとメインアプリケーションビューを切り替える空のShell-Viewを使用してこれを実装するためのいくつかの提案をオンラインで見ました。もちろん、それぞれにカスタムViewModelがあります。
私にとって、これらは非常に異なるプロパティ(タイトル、アイコン、サイズ)を持つ2つの別々のウィンドウであり、2つが一方のウィンドウをもう一方のウィンドウのように変更するのは汚れた解決策のように見えるため、このソリューションはあまり好きではありません。もう1つの問題は、ログインウィンドウが、私が制御しておらず、Caliburn.Microを使用していないユーティリティライブラリからのものであるということです。これは、ユーザーが[ログイン]をクリックしたときにイベントを表示する古いウィンドウです。
Bootstrapperの起動方法でこのダイアログを表示する提案も見ましたが、問題は、ユーザーがアプリケーションの「ログアウト」を選択して、ログインダイアログを再度表示できることです。Bootstrapperでビュー間の切り替えを処理するのは間違っているようです。
Caliburn Conductorのように機能する何らかのApplicationViewModelまたはApplicationControllerが必要ですが、ウィンドウ内のビューを切り替える代わりに、LoginWindowとMainWindowを切り替え、アプリケーション全体のクローズも処理する必要があります(これはログアウトも必要です)。アクティベーション時に、LoginWindowが表示され、Loginイベントが処理されてから、メインウィンドウ(シェル)に切り替わります。ユーザーが「ログアウト」を選択した場合、イベントは再びApplicationViewModel / Controllerにバブルアップし、メインウィンドウを非アクティブ化/閉じ、ログアウトを実行してから、LoginDialogを再度表示します。同様に、Closeイベントはログアウトを実行しますが、アプリケーション全体をシャットダウンします。
だから私の質問は:
- このソリューションについてどう思いますか?また、別の/より良いソリューションがありますか?
- これを実装するにはどうすればよいですか?;-)
どうもありがとう!