MVVM アーキテクチャに WPF アプリケーションがあります。アプリケーションが読み込まれると、ユーザーがユーザー名とパスワードを入力する「ログイン」ウィンドウを表示する必要があります。
これは、WCF サービスに接続するクライアントを作成する ServiceLocator に渡されます。
質問 :
ビューの「.cs」ファイルでコード ビハインドを使用せずに、クライアントが正常に接続されたら、「ログイン」ウィンドウを閉じるにはどうすればよいですか?
ログインにダイアログサービスを使用し、イベントを公開します
event EventHandler<RequestCloseEventArgs> RequestCloseDialog;
クライアントが正常にログインすると、ダイアログが閉じます。
編集:これは例です
あなたのapp.xaml.cs
protected override void OnStartup(StartupEventArgs e)
{
var result = this._dialogService.Show("Login",this._myloginviewmodel);
// When use click cancel in the login dialog
if(!result)
{
// Close app or whatever
}
// Access the properties of myloginviewmodel if you want
// Now the only part of my app where I use view-first instead of viewmodel-first
this.MainWindow = new MainWindow(_mainwindowviwemodel);
this.MainWindow.Show();
}
それはすべて myOnStartup()
にあります。はい、それは my の分離コードですapp.xaml
が、これは私のアプリケーション ルートであり、これが私にとっては問題ない理由です。app.xaml
ユーザーに「表示」されることはないため、AppViewModelなどはありません。
ログイン画面をダイアログとして開くことができる Application クラスの OnStartup メソッドをオーバーライドできます。ユーザーが有効なデータを入力すると、ブール値を返すことができます。ログイン画面を閉じると、ブール値に基づいてさらにロジックを実行できます。