我在许多帖子中看到,视图模型之间的通信应使用Messenger Bus进行。
我想知道的是,简单地从主VM执行子VM方法是不好的?
假设具有带有tabcontrol的视图,其中每个tabitem都是一个孩子ViewModel。
关闭申请时,我需要存储设置调用savesettings()儿童VM方法。
我需要知道这是否是一个不好的代码,以防万一。
main view
-> closingEvent
-> call MainVM SaveAllSettings()
-> for (ChildVM childVM in allTabs)
--> childVM.SaveSettings() (public method)
如果您的对象已经彼此耦合,即,如果父级视图模型已经具有很强的参考儿童视图模型,则无需使用Messenger或事件聚合器来之间交流。然后,您可以(或更确切地说)直接调用孩子的任何方法。
当然,存在这种父母/子女关系的情况,这不一定是一件坏事或设计不良的迹象。这完全取决于您对象的关系。