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

时间:2016-12-19 15:43:13

标签: c# wpf mvvm

我在很多帖子中都看到,应该使用信使总线完成视图模型之间的通信。

我想知道的是,从主vm简单地执行子vm方法被认为是不好的吗?

假设有一个带TabControl的视图,其中每个TabItem都是子视图模型。

当我关闭我的应用程序时,我需要存储我的设置,调用SaveSettings()子vm方法。

我需要知道它是否是一个错误的代码,以及原因。

main view
-> closingEvent
  -> call MainVM SaveAllSettings()
     -> for (ChildVM childVM in allTabs)
       --> childVM.SaveSettings() (public method)

1 个答案:

答案 0 :(得分:2)

如果您的对象已经相互耦合,即如果父视图模型已经具有子视图模型的强引用,则不需要使用信使或事件聚合器来在它们之间进行通信。然后你可以(或者更应该)直接调用孩子的任何方法。

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