如何使视图模型和模型进行通信?

时间:2011-11-15 07:50:07

标签: wpf mvvm

我正在为我的应用程序使用MVVM模式。该模型实际上并行运行一组测试,并保持测试状态的选项卡,包括其结果。我希望状态和结果显示在视图中。我被困在设计视图模型。

问题是模型中有很多类和子类层次结构,其中存储了要在视图中显示的所有必需数据。这些数据是动态的。 我现在不确定如何设计视图模型。

我正在思考这些问题 - 在视图模型中创建一个新的数据结构,它反映了视图中要显示的内容,并且所有视图模型都将挖掘模型以获取所需的数据。在这种情况下,我很困惑模型在数据发生变化时如何更新视图模型。或者,如果数据存储在不同的类和子类中,模型和视图模型如何相互通信。

2 个答案:

答案 0 :(得分:1)

您的视图模型应该包含所有需要在视图上显示数据的模型的引用。然后,视图模型应处理模型类中的事件并触发NotifyPropertyChanged事件。

如果您的视图很复杂且需要大量模型,那么您可以考虑在多个视图和相应的视图模型中拆分视图。

答案 1 :(得分:1)

你说用户选择要查看的数据,所以我想你的VM可以包含一个模型数组和一个指示哪个是“活动”数据的索引,并且只与那个数据通信。

对于该通信,解决方案可以是在新数据可用时将要调用的Action传递给模型,并且该Action将触发VM中的NotifyPropertyChanged。如果确保只有'active'模型具有该Action,那么这将特别有效,而在其他模型中它将为null,意味着'不触发更新'。