ビュー/ビューモデル間の疎結合をサポートするために、作業中の UI プロジェクト (Silverlight/MVVM) でイベント アグリゲーター パターンを利用することを検討しています。簡単なイベンティング システムを使用していくつかの画面を作成しました。この時点では概念実証にすぎませんが、疎結合システムを作成するための非常に洗練されたソリューションのように思えます。
私が直面している問題は、受信ビューモデルがまだインスタンス化されていないときに、あるビューモデルから別のビューモデルにデータを渡すことです。たとえば、Customer List 画面が開いている場合、ユーザーは特定の顧客をクリックして、Customer Detail の編集/表示画面 (おそらく子ウィンドウ) を開くことができます。顧客の詳細画面が機能するには、顧客 (または顧客 ID) が必要です。
したがって、OpenCustomerDetailEvent に関連する顧客情報が含まれていることは妥当と思われますが、その情報を Customer Detail V/VM に挿入するためのオプションにはどのようなものがありますか? イベントが処理されるときはまだメモリ内にないため、イベントを直接リッスンすることはできません (それ自体がハンドラーになることはできません)。ビューとビュー モデルの両方を作成するために依存性注入コンテナーを使用しているため (現在は「ビューを最初に」実行しています)、別のハンドラーにコンストラクターを介してデータを注入させることは適切なオプションではありません。
データが構築されたら、View(Model) にデータを取得するための他のオプションは何ですか? 厳密に型指定されたパラメータを取る init メソッド? セッターを使用してデータを注入しますか? ハンドラーに V/VM を作成させてから、VM がリッスンする 2 番目のイベントをディスパッチしますか?