c# - 多层如何在MVVM模式中工作?

标签 c# wpf mvvm

我正在努力使自己了解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/

相关文章:

Visual Studio 2005 的 C# 模板

wpf - 了解 WPF 和 Expression Blend 之间的关系

c# - MVVM,对ViewModelLocator和DataTemplate感到困惑,导致ViewFirst vs ViewModel First

C# 使用 newtonsoft 删除 json 子节点

c# - 如果字符串是在 C# 中插入的,如何检查接受字符串的方法内部?

wpf - DataTemplate 中的 ComboBox ItemsSource 绑定(bind)

c# - DateTimePicker.selectedDate 不同于 DateTimePicker.Text

c# - WPF 单击时更改按钮上的 xaml 图标

wpf - 使用 DelegateCommand 的 CanExecute 操作

c# - PayPal 支付操作 - 错误 81002