MVVMLight を使用して WPF アプリケーションを作成しています。ViewModelLocator を使用してビューモデルを作成します。私の問題は、それらの間でパラメーターを渡すことです。
たとえば、次のような状況があります。
いくつかのエンティティを含むグリッドがあります。そのうちの 1 つをダブルクリックすると、そのエンティティの詳細を含む新しいビューを作成する必要があります。選択したアイテムIDを新しいビューのViewModelに送信する方法は?
MVVMLight を使用して WPF アプリケーションを作成しています。ViewModelLocator を使用してビューモデルを作成します。私の問題は、それらの間でパラメーターを渡すことです。
たとえば、次のような状況があります。
いくつかのエンティティを含むグリッドがあります。そのうちの 1 つをダブルクリックすると、そのエンティティの詳細を含む新しいビューを作成する必要があります。選択したアイテムIDを新しいビューのViewModelに送信する方法は?
通常、PrismのEventAggregatorやMVVMLightのMessengerなどのある種のメッセージングシステムを使用します。
どちらのシステムもページングシステムを思い出させます。アプリケーションのどの部分でもメッセージをブロードキャストでき、アプリケーションのどの部分でもメッセージをリッスンするようにサブスクライブできます。
したがって、DoubleClickコマンドはLoadItemMessage
、選択されたアイテムを含むコンテンツをブロードキャストしId
、アイテムの表示を担当するものはすべて、受信をサブスクライブし、をLoadItemMessages
聞くたびにアイテムをロードしますLoadItemMessage
。
興味があれば、私のブログに、イベントシステムの概要を説明するMVVMを使用したViewmodel間の通信に関する簡単な記事があります。
これは、ViewModelLocator (View xaml から ViewModel にパラメーターを渡すため) の問題です。あなたができることは、ViewModelLocatorクラスでTypeオブジェクトまたは(SelectedItemタイプの)Property Parameterを作成することです。これを Grid の SelectedItem にバインドしてから、新しい ViewModel に渡します。これが役立つことを願っています。注:オブジェクト型のプロパティを作成する場合は、忘れずにキャストしてください。