質問

こんにちは、UserControlsに個別の機能ユニットを持つことでアプリケーションを拡大し、これらのいくつかをメインページにコンテンツコントロールのグリッド内に入れたいと思います。グリッド内のコントロール間で通信できる必要があります。

私は、彼らがデータを交換するための最良の方法は何だろうと思っています。アプリケーションはMVVMデザインであり、各UserControlには独自のViewModelがあります。メインフォームのコンテンツコントロールの各コンテンツプロパティは、そのコンテンツコントロールに表示されるusercontrolを提供するメインフォームのビューモデルのプロパティにバインドされています。

たとえば、拡張ファイルブラウザが必要だとしましょう。そのため、usercontrolに組み込みます。次に、別のusercontrolにファイルビューアーがあります。メインフォームのグリッドで両方を同時に見せることができます。ブラウザを使用してファイルを選択するときは、選択したファイルをViewer UserControlが利用できるようにしたいと考えています。

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

役に立ちましたか?

解決

メッセージバスを使用します。あなたが使用している場合 MVVM Light TakeT, 、たとえば、を使用します 組み込みのimessengerの実装. 。そうでない場合は、自分で転がすのはかなり簡単です。

メッセージバスがあると、あるViewModelでメッセージに登録して、別のViewModelからメッセージを公開できます。これは、ViewModel全体で(1つから1つまたは「ブロードキャスト」ファッションで)通信する簡単な方法です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top