为什么在可观察的集合事件参数中有更改列表?
Why there is list of changes in observable collection event args?
我想了解为什么有两个 list 属性 NewItems
和 OldItems
而您一次只能添加或删除一个项目?
private void InternalCollectionChanged(object sender, NotifyCollectionChangedEventArgs args)
{
var changes = args.NewItems; // why this is a list?
}
我查看了 ObservableCollection
的可用方法,我一次只能添加或删除一个项目。
如果我一次只能添加或删除一个项目,为什么要在事件参数中列出更改列表而不是单个添加或删除更改?
ObservableCollection<T>
是 INotifyCollectionChanged
接口的实现,实际上它不支持添加或删除多个项目。但是您可以创建自己的集合 class 实现 INotifyCollectionChanged
(和 INotifyPropertyChanged
),这将支持添加或删除多个项目。
作为@Pavel 回答的附加信息,ObservableCollection<T>
不支持开箱即用,但您可以创建支持此功能的 ObservableCollection<T>
的自定义派生类型。一个很好的例子是 ObservableRangeCollection
from James Montemagno or a even more optimized version in this Stack Overflow answer.
我想了解为什么有两个 list 属性 NewItems
和 OldItems
而您一次只能添加或删除一个项目?
private void InternalCollectionChanged(object sender, NotifyCollectionChangedEventArgs args)
{
var changes = args.NewItems; // why this is a list?
}
我查看了 ObservableCollection
的可用方法,我一次只能添加或删除一个项目。
如果我一次只能添加或删除一个项目,为什么要在事件参数中列出更改列表而不是单个添加或删除更改?
ObservableCollection<T>
是 INotifyCollectionChanged
接口的实现,实际上它不支持添加或删除多个项目。但是您可以创建自己的集合 class 实现 INotifyCollectionChanged
(和 INotifyPropertyChanged
),这将支持添加或删除多个项目。
作为@Pavel 回答的附加信息,ObservableCollection<T>
不支持开箱即用,但您可以创建支持此功能的 ObservableCollection<T>
的自定义派生类型。一个很好的例子是 ObservableRangeCollection
from James Montemagno or a even more optimized version in this Stack Overflow answer.