У меня есть класс, который наследует от ObservableCollection
и добавляет несколько дополнительных методов, таких как AddRange
и RemoveRange
Мой базовый вызов метода такой:
public void AddRange(IEnumerable<T> collection)
{
foreach (var i in collection) Items.Add(i);
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
}
Моя проблема в том, что я хочу получить доступ к e.NewItems
или e.OldItems
в событии CollectionChanged
, чтобы выполнить действие с любым элементом в коллекции, и действие NotifyCollectionChangedAction.Reset
не передает эти значения
void Instances_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (e.NewItems != null) // e.NewItems is always null
{
foreach (var item in e.NewItems)
{
if (item is EventInstanceModel)
((EventInstanceModel)item).ParentEvent = this;
}
}
}
Так что я подумал, что мог бы просто использовать NotifyCollectionChangedAction.Add
вместо Reset
, однако это выдает Range actions are not supported
исключение
public void AddRange(IEnumerable<T> collection)
{
var addedItems = collection.ToList();
foreach (var i in addedItems) Items.Add(i);
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, addedItems));
}
Итак, мой вопрос: как я могу вызвать событие CollectionChanged и передать ему новый или старый список элементов?