JLo*_*ott 5 c# collections wpf ienumerable observablecollection
我正在尝试决定是否要将所有IEnumerable
集合切换到Observable Collections.我找不到对此的好解释.可观的条款中,Observable Collection的优点和缺点是什么?
Cle*_*ens 13
您可能决定IEnumerable<Something>
使用某些属性的类型,但将其ObservableCollection<Something>
用作实际值.
如果您有这样的房产:
private IEnumerable<Something> collectionOfSomething;
public IEnumerable<Something> CollectionOfSomething
{
get { return collectionOfSomething; }
set
{
collectionOfSomething = value;
NotifyPropertyChanged("CollectionOfSomething");
}
}
Run Code Online (Sandbox Code Playgroud)
现在你可以简单地分配给那个属性
someViewModelObject.CollectionOfSomething = new ObservableCollection<Something>();
Run Code Online (Sandbox Code Playgroud)
当您分配或绑定到集合属性(例如ItemsControl.ItemsSource
)时,目标对象通常会检查实际属性值是否实现INotifyCollectionChanged
(做什么ObservableCollection
)并附加CollectionChanged
处理程序以获取有关源集合中更改的通知.
如果您以后决定使用其他更智能的实现,INotifyCollectionChanged
则无需更改所有属性类型.只需用这样的东西替换任务即可
someViewModelObject.CollectionOfSomething = new MyVerySmartCollection<Something>();
Run Code Online (Sandbox Code Playgroud)