2009-07-01 3 views
5

ich eine WPF-Anwendung haben, die das MVVM Muster im gesamten verwendet, kein Code-behind, kommunizieren die Viewmodels miteinander durch die MainViewModel, die in jedem von ihnen injiziert wird.Wie kommunizieren Module in Prism (CAL) miteinander?

Schließlich muss diese Anwendung in eine Anwendung integriert werden, die Composite Application Bibliothek, Unity verwendet, usw. Beim Blick durch den Code und die Dokumentation von CAL, kann ich sehen, wie ich meine ganze Anwendung registrieren kann als Modul in der CAL-Anwendung, aber wie kommuniziert meine Anwendung als Modul mit den anderen Modulen, die auch dynamisch geladen werden? Ich erwarte z.B. dass jedes Modul bekommt die CAL-Anwendung irgendwie injiziert, oder dass es eine Art Event Controller oder Messenger Messenger mit dem ich lose mit den anderen Modulen kommunizieren kann, dh kann eine Nachricht senden und reagieren auf Ereignisse, aber keine Sorge ob diese Module tatsächlich vorhanden sind oder nicht.

Wie kommunizieren Composite Application Module miteinander?

Antwort

6

Wenn Sie CAL (Prism) werden mit Blick in den Event Aggregator/CompositePresentationEvent, wo es das Publisher/Subscriber-Muster verwendet (aka Pub/Sub) so einige Module der App zu einem Event-Aggregator abonniert sind, so dass, wenn ein anderes Modul hat Ändert es Änderungen (z. B. SelectedItemChanged) an den Ereignisaggregator. Wenn andere Module an den Änderungen interessiert sind, werden sie in diesem Teil der Anwendung ausgeführt.

Beispiel:

Eine Desktop-E-Mail-Anwendung:

Module:

  • Mail-Artikel (mailid, Betreff, Absender, SentDate..etc)
  • Detailansicht (Messagebody)

Wenn t er Auswahl der Sendungen ListBox wird geändert, er veröffentlicht die mailid an den Event Aggregator dann Detailansicht über die Änderung kennt und dann packt er die Message für diese E-Mail von mailid. wo "MailItems" und "DetaliView" Module wurden von verschiedenen Teams entwickelt, aber sie haben MailID als eine gemeinsame erwartete Nachricht dazwischen.