2012-07-16 2 views
6

MVVMLightを使用してWPFアプリケーションを作成しています。私は、ViewModelを作成するためにViewModelLocatorを使用します。 私の問題は、それらの間でパラメータを渡すことです。例えばviewmodellocatorを使用してビューモデル間でパラメータを送信する方法

我々は状況がある:

そのうちの一つが、私はそのエンティティの詳細と新しいビューを作成する必要がダブルクリックされたときに我々は、いくつかのエンティティとのグリッドを持っています。選択したアイテムIDを新しいビューのViewModelに送信するにはどうすればよいですか?

+3

こんにちは、GalasoftのようなMessagingServices、またはViewModelからViewModelへのメッセージングを使用して、 – ethicallogics

答えて

3

通常、PrismのEventAggregatorやMVVM LightのMessengerなどのメッセージングシステムを使用します。

いずれのシステムでも、ページングシステムを思い出させます。アプリケーションのどの部分もメッセージをブロードキャストし、アプリケーションの一部をブロードキャストしてメッセージを受信することができます。

だからあなたのDoubleClickのコマンドは、選択した項目Idを含むLoadItemMessageを放送し、そして何LoadItemMessagesを受信するためにサブスクライブう項目を示す責任がある、それはLoadItemMessageを聞くたび項目をロードします。

興味があれば、イベントシステムの概要を紹介するブログCommunication between Viewmodels with MVVMに関する簡単な記事があります。

+1

ありがとう、私はメッセージングシステムについて少し知っていましたが、 – Eugene

1

これはViewModelLocatorの問題です(View xamlからViewModelにパラメータを渡すため)。あなたが行うことができるのは、ViewModelLocatorクラスのTypeオブジェクトまたは(SelectedItemをタイプする)プロパティパラメータを作成することです。これをグリッドのSelectedItemにバインドし、新しいViewModelに渡します。これが助けてくれるといいなあNOte:オブジェクト型のプロパティを作成する場合は、それをキャストするのを忘れないでください。

+0

を正しく理解していれば、あなたのアプローチは正しく動作しますが、巨大なシステムを管理するのは非常に難しくなります。私が理解できるようにいくつかのコードサンプルを提供してください。 Thanks – Eugene

関連する問題