使用MVVM Light的复杂树模型和ViewModel

时间:2016-03-24 11:23:13

标签: c# wpf mvvm binding viewmodel

我遇到了MVVM的设计问题。

我想以树的方式制作通用模型(简化):

public class ModelElement : ViewModelBase, IModelElement
{
    private ValueWarper ValueProperty;
    public ValueWarper Value
    {
        get { return ValueProperty; }
        set { ValueProperty = value; RaisePropertyChanged(() => Value); }
     }

      private ObservableCollection<IModelElement> ChildrenProperty;
      public ObservableCollection<IModelElement> Children
      {
        get { return ChildrenProperty; }
        set { ChildrenProperty = value; RaisePropertyChanged(() => Children); }
      }

      private IModelElement ParentProperty;
      public IModelElement Parent
      {
          get { return ParentProperty; }
          set { ParentProperty = value; RaisePropertyChanged(() => Parent); }
      }
}

然后在我的ViewModel中我有这个属性:

private ObservableCollection<IModelElement> ListElementProperty;
public ObservableCollection<IModelElement> ListElement
{
    get { return ListElementProperty; }
    set { ListElementProperty= value; RaisePropertyChanged(() => ListElement);}
}

每个ModelElement都对视图中的控件具有约束力(TextBoxDatePickerLabel等等......)

视图中的绑定非常糟糕,我想改变它。我知道这不是一个可行的解决方案。

所以现在有一些方法可以达到我想要的效果: 通过将模型包装在ViewModel中来展平模型:好的......但是,如果我有10个级别呢?我要构建10个viewModels?...

ObservableDictionnary的子项构建类似于ObservableCollection而不是ModelElement的内容,如果键是精心选择的字符串,则在绑定视图中会更容易理解。

其他方式?任何想法?我的目标是在视图中使绑定不要太繁琐,保持简单灵活......

0 个答案:

没有答案