2011-01-18 15 views
2

こんにちは私は、UserControlsの機能を別々のユニットにし、これらのいくつかをメインページのContentControlのグリッド内に配置することでアプリケーションを拡張したいと考えています。グリッド内のコントロール間で通信できる必要があります。グリッド内の複数のWPF UserControl間の通信(MVVM App)

私は彼らがデータを交換するための最良の方法は何か、と思います。このアプリケーションはMVVMデザインであり、各UserControlには独自のViewModelがあります。メインフォームの各ContentControls 'Content'プロパティは、そのContentControlに表示されるUsercontrolを提供するメインフォームのviewmodelのプロパティにバインドされています。

例えば、拡張されたファイルブラウザが必要なので、UserControlにビルドします。次に、別のUserControlにファイルビューアがあります。私は、メインフォームのグリッドに同時に両方を表示できるようにしたいと考えています。ブラウザでファイルを選択すると、選択したファイルをViewerのUsercontrolで使用できるようになります。

このデザインを使用して、アプリケーションで必要な場所で機能の各チャンクを再利用できるようにしました。私は彼らがお互いを認識していない私の設計では、それらの間でデータを転送するために最善の方法については明確ではない。何かアドバイス?ありがとう!

答えて

2

メッセージバスを使用します。たとえば、MVVM Light Tookitを使用している場合は、in-built IMessenger implementationを使用します。もしそうでなければ、それはあなた自身をロールバックするのがかなり簡単です。

メッセージバスがあれば、1つのViewModelにメッセージを登録し、別のViewModelからメッセージを発行することができます。これは、ViewModel間で(1対1に、または「ブロードキャスト」方式で)通信する簡単な方法です。

+0

偉大な情報マット大変ありがとう、それを調べます。 – TripleAntigen

関連する問題