多个层如何在MVVM模式中工作?

时间:2012-07-16 17:00:45

标签: c# wpf mvvm

我试图了解MVVM。对于简单的列表 - >数据视图,没问题。但我很难理解多层的工作原理。我有点工作,但它是非常受欢迎的,错过了哪些位工作,哪些位不工作。例如,一些数据更新,有些则没有。在更深层次上应该影响上层列表的任何内容有时会更新列表,有时则不会。必须有一个模式,但我还没有发现它。有没有人知道任何教程不仅仅是list->数据类型的视图?

示例:

List of widgets
+- Widget name
+- Widget description
+- List of Widget parts
   +- Part ID
   +- Colour

在该示例中,我可以使用三列方法 - 左侧的小部件列表,中间的小部件信息(包括部件列表),然后是右侧的部件详细信息。

1 个答案:

答案 0 :(得分:3)

您应该有多个ViewModel,每个级别一个。 然后,您可以提供事件,让上层更新。

例如,您可以拥有

public class WidgetListViewModel 
{
    public ObservableCollection<WidgetViewModel> Widgets {get; set; } 
}

public class WidgetViewModel
{
    public string WidgetName { get; set; }
    public string WidgetDescription { get; set; }
    public ObservableCollection<WidgetPartViewModel> Parts { get; set; }
}

public class WidgetPartViewModel
{
    public int PartId { get; set; }
    public System.Windows.Media.Color Color { get; set; }
}

此处描述了事件(包括简单模式)Events in .Net

此外,我建议在MVVM上观看这个优秀的视频教程: Jason Dollinger on MVVM

该视频还涵盖了Unity的一些问题! (这对你来说非常有价值)

他开发的源代码也可用: Lab49 Sourcecode by Jason Dollinger