2009-07-01 15 views
5

Ho un'applicazione WPF che utilizza il pattern MVVM in tutto, senza code code, i ViewModels comunicano tra loro tramite il MainViewModel che viene iniettato in ciascuno di essi.Come i moduli in Prism (CAL) comunicano tra loro?

Alla fine, questa applicazione ha bisogno di essere incorporati in un programma che utilizza applicazioni composite Biblioteca, Unità, ecc Guardando attraverso il codice e la documentazione di CAL, posso vedere come posso registrare il mio intera applicazione come modulo nell'applicazione CAL, ma in che modo la mia applicazione-come-modulo sta per comunicare con gli altri moduli che vengono caricati anche in modo dinamico? Mi aspetto, ad es. che ogni modulo ottiene l'applicazione CAL qualche modo iniettato, o che ci sia un qualche tipo di controller evento o Messenger con cui posso liberamente comunicare con gli altri moduli, vale a dire in grado di inviare un messaggio e rispondere agli eventi, ma non ti preoccupare se quei moduli sono effettivamente lì o no.

In che modo i moduli dell'applicazione Composite comunicano tra loro?

risposta

6

Se si utilizza CAL (Prism) esaminare la Event Aggregator/CompositePresentationEvent dove si utilizza il modello di Publisher/Subscriber (aka Pub/Sub) in modo da alcuni moduli del APP è iscritto a un evento Aggregator, così quando un altro modulo ha modifiche cambierà le modifiche, ad esempio (SelectedItemChanged) all'Agente di aggregazione eventi, se gli altri moduli sono interessati alle modifiche pubblicate, agiranno all'interno della parte dell'applicazione.

Esempio:

Un desktop e-mail Applicazione:

Moduli:

  • invii postali (MailID, oggetto, mittente, SentDate..etc)
  • visualizzazione dettagliata (MessageBody)

Se t la selezione nella Mail ListBox viene modificata, pubblica MailID per l'Aggregatore di eventi, quindi la Vista di dettaglio conosce la modifica e quindi afferra il MessageBody per quell'e-mail per MailID. dove i moduli "MailItems" e "DetaliView" sono stati sviluppati da diversi team ma hanno MailID come un messaggio comune previsto tra.

Problemi correlati