为什么在可观察的集合事件参数中存在更改列表



我试图理解为什么有两个列表属性NewItemsOldItems,而您一次只能添加或删除单个项目?

private void InternalCollectionChanged(object sender, NotifyCollectionChangedEventArgs args)
{
    var changes = args.NewItems; // why this is a list?
}

我查看了ObservableCollection的可用方法,一次只能添加或删除单个项目。

如果我一次只能添加或删除单个

项目,那么在事件参数中具有更改列表而不是单个添加或删除更改的原因是什么?

ObservableCollection<T>INotifyCollectionChanged接口的实现,实际上它不支持添加或删除多个项目。但是您可以创建自己的集合类,实现INotifyCollectionChanged(和INotifyPropertyChanged(,这将支持添加或删除多个项。

作为@Pavel答案的附加信息,ObservableCollection<T>不支持开箱即用,但您可以创建支持此功能的ObservableCollection<T>的自定义派生类型。一个很好的例子是James Montemagno的ObservableRangeCollection或这个Stack Overflow答案中更优化的版本。

最新更新