我正在考虑是否要将所有的IEnumerable
集合转换为Observable Collections。但我找不到一个好的解释。以易懂的方式,有哪些使用Observable Collection的优缺点呢?
我正在考虑是否要将所有的IEnumerable
集合转换为Observable Collections。但我找不到一个好的解释。以易懂的方式,有哪些使用Observable Collection的优缺点呢?
IEnumerable<Something>
,但实际值使用ObservableCollection<Something>
。private IEnumerable<Something> collectionOfSomething;
public IEnumerable<Something> CollectionOfSomething
{
get { return collectionOfSomething; }
set
{
collectionOfSomething = value;
NotifyPropertyChanged("CollectionOfSomething");
}
}
现在你可以简单地像这样分配给该属性
someViewModelObject.CollectionOfSomething = new ObservableCollection<Something>();
当你给集合属性(例如ItemsControl.ItemsSource
)分配或绑定值时,目标对象通常会检查实际属性值是否实现了INotifyCollectionChanged
(ObservableCollection
的作用),并附加一个CollectionChanged
处理程序以便在源集合中发生更改时被通知。INotifyCollectionChanged
实现,您不需要更改所有属性类型。只需将分配更改为以下内容之类的东西即可。someViewModelObject.CollectionOfSomething = new MyVerySmartCollection<Something>();
ObservableCollection<T>
中受益。 - EtherDragon INotifyCollectionChanged, INotifyPropertyChanged