我正在尝试决定是否要将所有 IEnumerable
集合切换到 Observable 集合。我找不到很好的解释。 Observable 集合的优点和缺点是什么?
最佳答案
您可以决定使用 IEnumerable<Something>
作为某些属性的类型,但使用 ObservableCollection<Something>
作为实际值。
如果你有这样的属性(property):
private IEnumerable<Something> collectionOfSomething;
public IEnumerable<Something> CollectionOfSomething
{
get { return collectionOfSomething; }
set
{
collectionOfSomething = value;
NotifyPropertyChanged("CollectionOfSomething");
}
}
现在您可以像这样简单地分配给该属性
someViewModelObject.CollectionOfSomething = new ObservableCollection<Something>();
当您分配或绑定(bind)到集合属性(例如 ItemsControl.ItemsSource
)时,目标对象通常会检查实际属性值是否实现了 INotifyCollectionChanged
(ObservableCollection
做什么)并附上一个 CollectionChanged
处理程序以获取有关源集合更改的通知。
如果您稍后决定对 INotifyCollectionChanged
进行一些其他更智能的实现您不需要更改所有属性类型。只需用这样的东西替换作业
someViewModelObject.CollectionOfSomething = new MyVerySmartCollection<Something>();
关于c# - 在 IEnumerable 上使用 Observable 集合的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14837834/