列表还是 ObservableCollection?

Ksi*_*ice 3 wpf xaml observablecollection

使用性能是否有任何差异ObservableCollection,(据我了解)每次将项目添加到集合List时都会刷新视图,或者改为使用简单集合,并在所有元素都已添加时刷新整个视图?

List上面所描述的场景是否可能?那如何实现呢?

我问是因为我的 ItemsControl 很慢,我想知道使用简单的 List 而不是 ObservableCollection 会更好。我只需要一次刷新视图,而实际上所有元素都已添加到集合中。

Ian*_*Ian 5

ObservableCollection<T>执行IList<T>一样List<T>。主要的区别当然是,它实现INotifyCollectionChanged了允许 WPF 绑定到它。

ObservableCollection<T>每次更改后引发的事件,因此UI可以进行刷新。如果您按顺序添加大量 Item,它可能会对您的性能产​​生一些影响,但这不太可能。您可以通过使用带有列表的构造函数来测试这个相当简单的:

var originalList = new List<SomeClass>();

foreach ([..])
{
  originalList.Add(someInstance);
}

ObservableCollection<SomeClass> uiCollection = new ObservableCollection<SomeClass>(originalList);
Run Code Online (Sandbox Code Playgroud)

通过这种方式,您可以创建复杂的对象列表,完成后您可以从中创建一个 ObservableCollection,您将在 UI 上绑定到它。