Tho*_*enz 14 modularity prism module communication eventaggregator
我通过Prism指导工作,并认为我掌握了他们的大多数通信工具.
命令非常简单,因此很明显DelegateCommand仅用于将View与其模型连接起来.
当涉及交叉模块通信时,特别是何时使用EventAggregation而不是复合命令时,它有点不太清楚.
实际效果是相同的,例如
两者都按照"发射并忘记"的方式工作,即他们在触发事件/执行命令后不关心其订户的任何响应.
我很难看到使用中的实际差异,虽然我知道两者(引擎盖下)的实现是非常不同的.
那么我们应该想一想它的实际含义 - 事件?是什么事情发生(事件发生)?用户没有像"完成网页请求"那样直接请求的内容?
和命令?这是否意味着用户点击了某些东西,从而向我们的应用程序发出命令,直接请求服务?
是吗?或者是否有其他方法可以确定何时使用其中一种通信工具而不是另一种.该指南虽然是我读过的最好的文件之一,却没有给出具体的解释.
因此,我希望参与/使用棱镜的人可以帮助揭示这一点.
And*_*mes 15
这两者之间存在两个主要差异.
希望这有助于解释差异.更难说何时使用每个,但通常我使用经验法则,如果它是引发事件的用户交互,则使用命令执行其他任何操作,使用EventAggregator.
希望这可以帮助.
此外,还有一个更重要的区别:使用当前实现,EventAggregator中的事件是异步的,而CompositeCommand是同步的.
如果你想实现类似"通知事件X发生的事情;做依赖于事件X的事件处理程序执行的事情",你要么必须做类似Application.DoEvents()的事情,要么使用CompositeCommands.