我正在努力使自己了解MVVM。对于简单的list-> data View ,这没问题。但是我正在努力了解多层如何工作。我有点起作用,但是对于哪些位有效,哪些位无效,这是很偶然的事情。例如,某些数据更新,有些则没有。任何会影响较高列表的更深层次的内容有时都会更新列表,有时不会。必须有一个模式,但我还没有发现。有人知道任何教程都不仅仅是列表->数据类型的 View 吗?
例子:
List of widgets
+- Widget name
+- Widget description
+- List of Widget parts
+- Part ID
+- Colour
在该示例中,我可以采用三列方法-左侧的小部件列表,中间的小部件信息(包括零件列表),然后是右侧的零件明细。
最佳答案
您应该有多个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的一些问题! (这对您可能非常有值(value))
他开发的源代码也可用:
Lab49 Sourcecode by Jason Dollinger
关于c# - 多层如何在MVVM模式中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11509025/