从主视图模型调用子视图模型方法



我在许多帖子中看到,视图模型之间的通信应使用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或事件聚合器来之间交流。然后,您可以(或更确切地说)直接调用孩子的任何方法。

当然,存在这种父母/子女关系的情况,这不一定是一件坏事或设计不良的迹象。这完全取决于您对象的关系。

最新更新