【发布时间】:2010-12-03 22:44:40
【问题描述】:
我通过 Prism 指导工作,并认为我掌握了他们的大多数通信工具。
命令非常简单,因此很明显,DelegateCommand 将仅用于将 View 与其 Model 连接起来。
关于跨模块通信,特别是何时使用 EventAggregation 而不是复合命令,这一点不太清楚。
实际效果是一样的例如
- 您发布了一个事件 -> 所有订阅者都会收到通知并执行代码作为响应
- 您执行复合命令 -> 所有已注册的命令都将被执行,并附带它们的代码
两者都按照“触发后忘记”的方式工作,即他们不关心触发事件/执行命令后订阅者的任何响应。
虽然我知道两者的实现(在后台)非常不同,但我很难看到实际的使用差异。
那么我们应该考虑一下它的实际含义——事件吗?那是当事情发生(事件发生)时吗?用户没有直接请求的东西,比如“网络请求已完成”?
指挥部呢?这是否意味着用户点击了某些东西,从而向我们的应用程序发出命令,直接请求服务?
是这样吗?或者是否有其他方法可以确定何时使用其中一种通信工具而不是另一种。该指南虽然是我读过的最好的文档之一,但没有给出具体解释。
所以我希望参与/使用 Prism 的人可以帮助阐明这一点。
【问题讨论】:
-
我同意你的看法,我有 Prism 的 4 vs. pdf 自带 prism。它看起来不错,但是这个复合命令部分没有为我们提供正确的东西。它说在代码隐藏上提供数据上下文。我不敢相信人们编写了 prism 编码准备了这个文档。感谢您的提问。
标签: communication prism module modularity eventaggregator