2009-07-01 53 views
5

我有一個WPF應用程序,它使用MVVM模式貫穿始終,沒有代碼隱藏,ViewModel通過注入其中的每個MainViewModel相互通信。Prism(CAL)中的模塊如何相互通信?

最終,這個應用程序需要被併入到可使用複合應用程序庫,統一等通過CAL的代碼和文檔尋找一個應用程序,我可以看到我怎麼能註冊我的整個應用作爲一個模塊在CAL應用程序中,但我的應用程序作爲模塊將如何與其他也動態加載的模塊進行通信?我期待着,例如每個模塊獲取CAL應用程序注入或有某種事件控制器信使與我可以鬆散地與其他模塊溝通,即可以發送消息和響應事件,但不擔心如果這些模塊實際存在或不存在。

如何複合應用程序模塊相互溝通?

回答

6

如果您使用CAL(Prism)查看Event Aggregator/CompositePresentationEvent,它使用發佈者/訂閱者模式(又名Pub/Sub),因此應用程序的某些模塊訂閱了事件聚合器,因此當另一個模塊改變它將發佈例如(SelectedItemChanged)改變爲事件聚合器,如果其他模塊對發佈的改變感興趣,他們將在該應用的一部分內執行操作。

例子:

桌面電子郵件應用程序:

模塊:

  • 郵件項目(MailID,主題,發件人,SentDate..etc)
  • 詳細查看(消息體)

如果噸他在郵件項目列表框選擇得到改變,它出版的MailID到事件聚集,然後詳細查看所知道的變化,然後通過抓住該電子郵件的消息體MailID。其中「MailItems」和「DetaliView」模塊由不同的團隊開發,但它們之間有一個共同的期望消息,它們具有MailID