I am trying to decide if I want to switch all of my IEnumerable
collections over to Observable Collections. I cannot find a good explanation of this. What are the Pros and Cons of the Observable Collection in understandable terms?
I am trying to decide if I want to switch all of my IEnumerable
collections over to Observable Collections. I cannot find a good explanation of this. What are the Pros and Cons of the Observable Collection in understandable terms?
You may decide to have IEnumerable<Something>
as type of some property, but use ObservableCollection<Something>
as the actual value.
If you have a property like this:
private IEnumerable<Something> collectionOfSomething;
public IEnumerable<Something> CollectionOfSomething
{
get { return collectionOfSomething; }
set
{
collectionOfSomething = value;
NotifyPropertyChanged("CollectionOfSomething");
}
}
Now you may simply assign to that property like
someViewModelObject.CollectionOfSomething = new ObservableCollection<Something>();
When you assign or bind to a collection property (for example ItemsControl.ItemsSource
), the target object usually checks whether the actual property value implements INotifyCollectionChanged
(what ObservableCollection
does) and attaches a CollectionChanged
handler to get notified about changes in the source collection.
If you later decide to have some other, smarter implementation of INotifyCollectionChanged
you do not need to change all your property types. Just replace the assignment(s) by something like this
someViewModelObject.CollectionOfSomething = new MyVerySmartCollection<Something>();