How can I raise a CollectionChanged event on an ObservableCollection, and pass it the changed items?
I've been looking into it and apparently the CollectionChanged
method cannot be raised with multiple items.
So I can call
OnCollectionChanged(new NotifyCollectionChangedEventArgs( NotifyCollectionChangedAction.Add, singleItem));
but I can't call
OnCollectionChanged(new NotifyCollectionChangedEventArgs( NotifyCollectionChangedAction.Add, listOfItems));
For now what I have done is simply raise the Add event for every item added, but I am still rather unhappy at this since it means I raise the CollectionChanged
event for every item in the AddRange
method instead of only once.
public void AddRange(IEnumerable<T> collection){ foreach (var i in collection) { Items.Add(i); OnCollectionChanged(new NotifyCollectionChangedEventArgs( NotifyCollectionChangedAction.Add, i)); }}
This works fine for me "stand-alone". Meaning I'm not using an ObservableCollection
for data binding. So it's not an ObservableCollection
issue but rather a ListCollectionView
limitation.
Please read the following article, it's a very interesting read: