Jos*_*ose 5 c# data-binding collections wpf observablecollection
我想知道为什么根据这篇文章和可观察集合比WPF中的List <>集合明显更快地绑定(20毫秒vs 1685毫秒,比800倍快).我查看了ObservableCollection的内部,它使用List作为它的存储集合对象(我使用了反射器并在构造函数中看到了这个)
public Collection()
{
this.items = new List<T>();
}
Run Code Online (Sandbox Code Playgroud)
那么这里发生了什么?
该文章中的比较不是在两个简单的绑定操作之间进行的,这些测量是指将一个项目添加到ListBox已绑定到a List<T>或a的WPF的场景ObservableCollection<T>.
正如作者所说:
... CLR
List<T>对象不会自动引发集合更改事件.为了获取ListBox更改,您必须重新创建您的员工列表并将其重新附加到该ItemsSource属性ListBox.虽然此解决方案有效,但它会带来巨大的性能影响.每次重新分配时ItemsSource的ListBox一个新对象时,ListBox先扔掉以前的项目,并重新生成整个列表.
这解释了性能差异.即使ObservableCollection<T>由a支持List<T>,它也实现了INotifyCollectionChanged接口,这使得所有额外的处理变得不必要.
| 归档时间: |
|
| 查看次数: |
2512 次 |
| 最近记录: |