在类模型上使用DependencyProperty和ObservableCollection

时间:2011-03-30 01:10:48

标签: list mvvm xml-serialization dependency-properties observablecollection

我刚开始使用MVVM的WPF,所以请原谅任何误解。我有一个模型(不是视图模型,但实际模型),其中有许多List内部类,在其他List中生成数据树。

重要的是,数据应该是XML Serializabled,目前使用常规属性和List执行此操作没有问题。

这个类的View模型比我预期的要多得多,我正在考虑将一些或者所有的List转换为ObservableCollections,它的优点和缺点是什么?

此外,在“可绑定模型”,NotifyPropertyChange或DependencyProperties中最好的是什么?我认为使用DependencyProperty会有一些内存增加,因为许多对象将在大多数属性上使用默认值,一般性能如何,并且序列化有任何问题吗?

此致

1 个答案:

答案 0 :(得分:1)

  

这个类的View模型比我预期的要多得多,我正在考虑将一些或者所有的List转换为ObservableCollections,它的优点和缺点是什么?

ObservableCollection<T>相比,List<T>有更多的开销,但它确实更容易,因为直接与模型集合绑定的数据将起作用。

  

另外,“可绑定模型”中最好的是NotifyPropertyChange或DependencyProperties?

我不会在你的模型中使用DependencyProperties。这依赖于WPF库,并且非常特定于平台。如果您希望能够直接将数据绑定到模型,那么实现INotifyPropertyChanged是一种合理的方法。

然而,在进行任何这些更改之前,您真的应该停下来并花一点时间。如果您正在更改模型类主要是为了在View中使用它们,那么您违反了MVVM的基本原则(以及大多数其他架构模式)。这里的主要目标之一是您的模型不知道正在使用的表示层 - 这使得它在未来更加灵活,因为您可以在不更改模型的情况下更改表示层。