5

全体でMVVMパターンを使用するWPFアプリケーションがあり、コードビハインドはありません.ViewModelは、それぞれに注入されるMainViewModelを介して互いに通信します。

最終的に、このアプリケーションは、複合アプリケーション ライブラリ、Unity などを使用するアプリケーションに組み込む必要があります。CAL のコードとドキュメントを調べると、アプリケーション全体をモジュールとして CAL アプリケーションに登録する方法がわかります。モジュールとしてのアプリケーションは、動的にロードされる他のモジュールと通信しますか? たとえば、各モジュールに何らかの方法で CAL アプリケーションが注入されること、または他のモジュールと緩やかに通信できるイベント コントローラーまたはメッセンジャーが存在すること、つまり、メッセージを送信してイベントに応答することはできますが、心配する必要はないことを期待しています。それらのモジュールが実際に存在するかどうか。

複合アプリケーション モジュールはどのように相互に通信しますか?

4

2 に答える 2

6

CAL(Prism)を使用している場合は、イベントアグリゲーター/ CompositePresentationEventを調べて、パブリッシャー/サブスクライバーパターン(別名Pub / Sub)を使用します。これにより、アプリの一部のモジュールがイベントアグリゲーターにサブスクライブされるため、別のモジュールに変更が加えられると、変更をパブリッシュします。eg(SelectedItemChanged)をイベントアグリゲーターにパブリッシュします。他のモジュールがパブリッシュされた変更に関心がある場合、それらはアプリケーションのその部分内で動作します。

例:

デスクトップ電子メールアプリケーション:

モジュール:

  • メールアイテム(MailID、Subject、Sender、SentDate..etc)
  • 詳細ビュー(MessageBody)

メールアイテムリストボックスでの選択が変更されると、MailIDがイベントアグリゲーターに公開され、詳細ビューが変更を認識してから、その電子メールのMessageBodyをMailIDで取得します。ここで、「MailItems」モジュールと「DetaliView」モジュールは異なるチームによって開発されましたが、それらの間に共通の予想されるメッセージとしてMailIDがあります。

于 2009-07-01T12:07:22.863 に答える
3

Prism のイベント アグリゲータを確認してください。

于 2009-07-01T11:15:46.867 に答える