ObservableCollection数据绑定性能

时间:2009-06-17 15:16:09

标签: c# wpf data-binding collections observablecollection

我想知道为什么根据这个article和可观察的集合比List<>明显更快地绑定(20毫秒vs 1685毫秒,比800倍快)。 WPF中的集合。我查看了ObservableCollection的内部结构,它使用List作为它的存储集合对象(我使用了反射器并在构造函数中看到了它)

public Collection()
{
    this.items = new List<T>();
}

那么这里发生了什么?

1 个答案:

答案 0 :(得分:8)

该文章中的比较不是在两个简单的绑定操作之间,这些测量是指将一个项目添加到已绑定到ListBox的WPF List<T>的场景。或ObservableCollection<T>

正如作者所说:

  

...... CLR List<T>对象   不会自动提高   集合改变了事件。为了   让ListBox拿起来   更改,您将不得不重新创建   您的员工名单并重新附加   它到了ItemsSource属性   ListBox。虽然这个解决方案有效,但它   引入了巨大的性能影响。   每次重新分配ItemsSource时   ListBox对一个新对象,   ListBox首先扔掉它的前一个   项目并重新生成其整个列表。

这解释了性能差异。尽管ObservableCollection<T>List<T>支持,但它实现了INotifyCollectionChanged接口,这使得所有额外处理都不必要。