.NET NotifyCollectionChangedAction.Remove不刷新集合

时间:2010-12-14 22:09:35

标签: .net observablecollection

以下方法从我的自定义可观察集合中删除一系列项目:

 public void RemoveRange(IList items)
        {         

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

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

        }

NotifyCollectionChanged的EventHandler只调用CollectionView.Refresh()。当我这样做时,删除的项目仍在我的网格中。

但是,如果我一次删除一个项目并用此提出收集更改事件;

new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, item)

网格正常刷新。

我错过了什么吗?

TIA。

1 个答案:

答案 0 :(得分:1)

当有多个项目时,CollectionView不能正确支持CollectionChanged事件。我感觉他们没有实现,因为他们没有将AddRange / RemoveRange实现到ObservableCollection中。

您可以尝试使用NotificationCollectionChangedAction.Reset。如果您正在使用大型列表,请注意重置的性能成本,因为与集合相关的任何内容都必须重新绑定每个项目。