private void OnAdd(object sender, int index, IEnumerable <TSource> newItems) { IEnumerable <TSource> addedItems = GetAddedItems(index, newItems); ItemsIndex <TSource>? removedItems = GetRemovedItemsFromAdd(index, newItems.Count()); if (addedItems != null) { if (removedItems != null) { FireRemove(removedItems.Value.Items, removedItems.Value.Index); } FireAdd(addedItems, index); } }
private void OnRemove(object sender, int index, IEnumerable <TSource> oldItems) { IEnumerable <TSource> removed = GetRemovedItems(index, oldItems); if (removed != null) { FireRemove(removed, index); ItemsIndex <TSource>?addedItems = GetAddedItemsFromRemove(index, oldItems.Count()); if (addedItems != null) { FireAdd(addedItems.Value.Items, addedItems.Value.Index); } } }