为什么可观察集合事件args中有更改列表?

时间:2018-02-02 08:45:45

标签: c# observablecollection eventargs inotifycollectionchanged

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

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

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

如果我一次只能添加或删除单个项目,那么在事件参数中包含更改列表而不是单个添加或删除更改的原因是什么?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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