我在很多帖子中都看到,应该使用信使总线完成视图模型之间的通信。
我想知道的是,从主vm简单地执行子vm方法被认为是不好的吗?
假设有一个带TabControl的视图,其中每个TabItem都是子视图模型。
当我关闭我的应用程序时,我需要存储我的设置,调用SaveSettings()子vm方法。
我需要知道它是否是一个错误的代码,以及原因。
main view
-> closingEvent
-> call MainVM SaveAllSettings()
-> for (ChildVM childVM in allTabs)
--> childVM.SaveSettings() (public method)
答案 0 :(得分:2)
如果您的对象已经相互耦合,即如果父视图模型已经具有子视图模型的强引用,则不需要使用信使或事件聚合器来在它们之间进行通信。然后你可以(或者更应该)直接调用孩子的任何方法。
当然存在这种父母/子女关系存在的情况,并不一定是坏事或设计不良的迹象。这完全取决于对象的关系。