以下方法从我的自定义可观察集合中删除一系列项目:
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。
答案 0 :(得分:1)
当有多个项目时,CollectionView不能正确支持CollectionChanged事件。我感觉他们没有实现,因为他们没有将AddRange / RemoveRange实现到ObservableCollection中。
您可以尝试使用NotificationCollectionChangedAction.Reset。如果您正在使用大型列表,请注意重置的性能成本,因为与集合相关的任何内容都必须重新绑定每个项目。