私はMVVM Lightを使用しており、パッケージ化されたメッセンジャーシステムを使用してビューモデル間の通信を行っていますが、ちょっとしたジレンマにぶつかりました! 基本的に、ユーザーが顧客レコードをクリックすると、対応するビューが開き、CustomerViewModelがインスタンス化されます。この時点で、CustomerViewModelは、以前のビュー モデル ( ViewAllCustomersViewModel ) から選択された顧客 ID を必要とするため、ビューがバインドする選択された顧客情報を取得できます (まだフォローしていますか?)。したがって、最初に考えたのは、 ViewAllCustomersViewModel (表示する顧客が選択されている場所) からCustomerViewModelへのメッセージでその ID を送信することでした...ただし、CustomerViewModelビューが読み込まれるまで (メッセージが既にブロードキャストされている時点で)、メッセージを受信できるようにインスタンス化されません!
では、この問題を解決する最善の方法は何でしょうか? これまでのところ、CustomerViewModelがインスタンス化された後にViewAllCustomersViewModelにリクエストを送信し(基本的には「メッセージを受信する準備ができています」と言っています)、次にViewAllCustomersViewModelが ID をCustomerViewModelに送り返すと考えてきましたが、これはこれを解決するために必要なアプローチは?私には少し醜いようです!
そうでなければ、私が抱えている問題を説明できるコミュニケーションの別の方法があると考えていましたか? しかし、これがメッセージング システムの要点ではないでしょうか...ビュー モデル間で通信できるようにするためでしょうか? または、起動時にビューモデルを強制的にインスタンス化できますか? もしそうなら、それはViewModelLocatorにどのように影響しますか?
問題の概要が明確に説明されていることを願っています。説明のために架空のビュー モデル名を使用しています。追加してほしい情報があれば、自由に編集または提案してください。