私はMVVMパターンの新人です。
ビューには、ログインボタンと進行状況バーがあります。
LoginViewModelというビューモデルがあります。これは、コマンドLoginCommandを公開し、ビューLoginPage.xamlに接続されています。
ログインコマンドを実行すると、ログインボタンが無効になり、進行状況バーが表示されます。
ログインに失敗した場合は、[ログイン]ボタンが有効になり、進行状況バーが非表示になります。
私が確信していないのは、このプレゼンテーションロジックがどこで発生するかです。ビューモードで発生する必要がありますか、それともページの背後にあるコードで発生する必要がありますか?
現在、ログインプロセスの開始時にtrueに設定され、失敗した場合はfalseに設定されたLoggingInというビューモデルにブールプロパティがあります。このブール値は、ボタンとプログレスバーのそれぞれIsEnabledプロパティとVisibilityプロパティにフックされています。
これは私には間違っていると感じたので、OnBeginLoginとOnEndLoginのいくつかのイベントを作成し、これらをページの後ろのコードに接続して、コントロールの視覚的な状態を制御するコードを試してみました。ただし、これには以前のソリューションよりもはるかに多くのコードが必要でした。
また、ビューモデルから視覚的な状態を制御できるように、コントロールに固有の2つのプロパティLoginButtonEnabledとProgressBarVisibleを公開することもできます。ただし、キャンセルボタンを追加する場合は、CancelButtonEnabledという別のプロパティを追加する必要があります。
ビューモデルでプレゼンテーションロジックを処理するべきではないと思うので、イベントを追加するのが最善の解決策のようですが、それを行うためのベストプラクティスまたは標準/一般的な方法は何ですか?
また、ログインが成功した場合、ユーザーを前のページまたは別のページに戻すことは、ビューモデルまたはページの後ろのコードで処理する必要がありますか?繰り返しになりますが、これはビューモデルには当てはまらないと思いますが、よくわかりません。
ご協力いただきありがとうございます。