我试图理解为什么有两个列表属性NewItems
和OldItems
,而您一次只能添加或删除单个项目?
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答案中更优化的版本。