使用 ObservableCollection
的性能是否有任何差异,(据我了解)每次将项目添加到集合时都会刷新 View ,或者改为使用简单的 List
集合,以及已添加所有元素时刷新整个 View ?
上面描述的 List
场景是否可能?那么如何实现呢?
我问是因为我的 ItemsControl 很慢,我想知道使用简单的 List 代替 ObservableCollection 是否会更好。我一次只需要刷新一次 View ,实际上所有元素都已添加到集合中。
最佳答案
ObservableCollection<T>
实现 IList<T>
就像 List<T>
做。当然,主要区别在于它实现了 INotifyCollectionChanged
这允许 WPF 绑定(bind)到它。
ObservableCollection<T>
每次更改后都会引发一个事件,以便 UI 可以刷新。如果您按顺序添加大量项目,它可能会对您的性能产生一些影响,但这不太可能。您可以使用带有 List 的 Constructor 进行相当简单的测试:
var originalList = new List<SomeClass>();
foreach ([..])
{
originalList.Add(someInstance);
}
ObservableCollection<SomeClass> uiCollection = new ObservableCollection<SomeClass>(originalList);
通过这种方式,您可以创建复杂的对象列表,完成后您可以从中创建一个 ObservableCollection,您将在 UI 上绑定(bind)到该列表。
关于wpf - 列表还是 ObservableCollection?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41680047/