0

我有两个模型 - 一个是“字段”,另一个是“布局”,后者又是字段的集合。我使用这些来实现树结构。我试图避免为布局实现 ViewModel,只是为了避免必须导航到树上的每个节点并避免另一个间接推送后台更新。但我必须为集合中的项目(字段)创建一个 ViewModel。在不破坏 MVVM 模式的情况下这可能吗?

我实际上正在考虑类似“字段”上的扩展属性之类的东西,我可以将其用于在视图中进行绑定,但经过一些分析发现这是不可能的。在这种情况下是否可以使用任何其他技术?

// Model
public interface IField
{
    string Name { get; set; }
    string Type { get; set; }
}

public interface ILayout : ICollection<IField>, IField
{
}
4

1 回答 1

0

您不需要为每种类型的数据创建一个视图模型。相反,您可以简单地INotifyPropertyChanged在它们上实现接口。在我看来,每个视图模型都应该有一个视图,因此您需要一个视图模型,其中包含要在TreeView. 定义这样的类的标准方法是这样的:

public class Item : INotifyPropertyChanged
{
    public string Name { get; set; } // Implement INotifyPropertyChanged
    public string Type { get; set; } // correctly on all of these properties   
    public ObservableCollection<Item> Items { get; set; }
}

然后,您的视图模型将至少具有与该ObservableCollection<Item> Items属性Bind相关的TreeView.ItemsSource属性。

于 2013-11-13T10:21:16.143 回答