public void RemoveRange(List <object> items) { CollectionChanged -= ThisCollectionChanged; foreach (T item in items) { Remove(item); item.PropertyChanged -= ItemPropertyChanged; DetachAnyCollectionChangedToDetailsItem(item); RemoveItems.Add(item); } CollectionChanged += ThisCollectionChanged; OnAnyCollectionChanged(); }
private void ThisCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if (e.Action == NotifyCollectionChangedAction.Add && e.NewItems != null) { foreach (T newItem in e.NewItems) { newItem.PropertyChanged += ItemPropertyChanged; AttachAnyCollectionChangedToDetailsItem(newItem); AddItems.Add(newItem); } } else if (e.Action == NotifyCollectionChangedAction.Remove && e.OldItems != null) { foreach (T oldItem in e.OldItems) { oldItem.PropertyChanged -= ItemPropertyChanged; DetachAnyCollectionChangedToDetailsItem(oldItem); RemoveItems.Add(oldItem); } } OnAnyCollectionChanged(); }