gpt4 book ai didi

wpf - Prism (CAL) 中的模块如何相互通信?

转载 作者:行者123 更新时间:2023-12-04 17:42:13 24 4
gpt4 key购买 nike

我有一个 WPF 应用程序,它始终使用 MVVM 模式,没有代码隐藏,ViewModels 通过 MainViewModel 相互通信,MainViewModel 被注入(inject)到它们中。

最终,这个应用程序需要合并到一个使用复合应用程序库、Unity 等的应用程序中。查看 CAL 的代码和文档,我可以看到我是如何做到的 将我的整个应用程序注册为 CAL 应用程序中的一个模块 ,但是我的应用程序模块如何与其他动态加载的模块进行通信?我期待,例如每个模块获取 CAL 应用程序以某种方式注入(inject) , 或者说有某种 事件 Controller 信使 我可以通过它与其他模块进行松散的通信,即可以发送消息并响应事件,但不用担心这些模块是否真的存在。

复合应用程序模块如何相互通信?

最佳答案

如果您使用 CAL(Prism),请查看 Event Aggregator/CompositePresentationEvent 它使用发布者/订阅者模式(又名 Pub/Sub),因此应用程序的某些模块订阅了事件聚合器,因此当另一个模块发生更改时,它将发布更改,例如(SelectedItemChanged)到事件聚合器,如果是其他模块对已发布的更改感兴趣,它们将在应用程序的部分中起作用。

例子:

桌面电子邮件应用程序:

模块:

  • 邮件项目( MailID ,Subject,Sender,SentDate..etc)
  • 详细 View (消息正文)

  • 如果 Mail Items ListBox 中的选择发生变化,它会发布 邮件ID 到事件聚合器,然后详细 View 知道更改,然后它通过 获取该电子邮件的 MessageBody邮件ID .其中“MailItems”和“DetaliView”模块由不同的团队开发,但它们有 邮件ID 作为两者之间的常见预期消息。

    关于wpf - Prism (CAL) 中的模块如何相互通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1068512/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com