2

こんにちは、UserControls の個別の機能単位を使用してアプリケーションを拡張し、メイン ページの ContentControls のグリッド内にこれらのいくつかを配置したいと考えています。グリッド内のコントロール間で通信できる必要があります。

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

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

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

4

1 に答える 1

2

メッセージバスを使用します。たとえば、 MVVM Light Tookitを使用している場合は、組み込みの IMessenger 実装を使用します。そうでない場合は、自分でロールバックするのはかなり簡単です。

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

于 2011-01-18T04:19:57.243 に答える