Pros and Cons of using Observable Collection over IEnumerable

后端 未结 4 1356
轮回少年
轮回少年 2020-12-18 07:42

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 t

4条回答
  •  遥遥无期
    2020-12-18 08:02

    You may decide to have IEnumerable as type of some property, but use ObservableCollection as the actual value.

    If you have a property like this:

    private IEnumerable collectionOfSomething;
    public IEnumerable CollectionOfSomething
    {
        get { return collectionOfSomething; }
        set
        {
            collectionOfSomething = value;
            NotifyPropertyChanged("CollectionOfSomething");
        }
    }
    

    Now you may simply assign to that property like

    someViewModelObject.CollectionOfSomething = new ObservableCollection();
    

    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();
    

提交回复
热议问题