.NET NotifyCollectionChangedAction.Remove не обновляет коллекцию - PullRequest
1 голос
/ 15 декабря 2010

Следующий метод удаляет диапазон элементов из моей настраиваемой наблюдаемой коллекции:

 public void RemoveRange(IList items)
        {         

            foreach (T item in items)
            {
                this.Remove(item);            

            }                 
                UpdateProcessingState(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, items));

        }

EventHandler для NotifyCollectionChanged просто вызывает CollectionView.Refresh ().Когда я делаю это, удаленные элементы все еще находятся в моей сетке.

Однако, если я удаляю по одному элементу за раз и инициирую событие изменения коллекции с этим;

new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, item)

сетка обновляется правильно.

Я что-то пропустил?

TIA.

1 Ответ

1 голос
/ 15 декабря 2010

CollectionView неправильно поддерживает событие CollectionChanged при наличии нескольких элементов.У меня такое ощущение, что они этого не реализовали, поскольку они не реализовали AddRange / RemoveRange в ObservableCollection.

Вместо этого вы можете попробовать использовать NotificationCollectionChangedAction.Reset.Просто будьте осторожны, если вы работаете с огромными списками, это приводит к снижению производительности при перезагрузке, потому что все, что связано с коллекцией, должно будет перепривязывать каждый элемент.

...