我的WPF列表框已启用虚拟化并绑定到ObservableCollection。如果在将所有项目添加到集合之前移除ItemsSource然后重新绑定它,我会在添加项目时获得更高的性能,但它仍会在1000多个项目上挂起3秒
this.listbox.ItemsSource = null;
//add a bunch of files to ObservableCollection
this.listbox.ItemsSource = CollectionViewSource.GetDefaultView(MyCollectionView);
如果我将CollectionViewSource用作ItemsSource而不是直接使用集合,那么性能似乎也会有小幅提升。
ItemTemplate并不是很复杂 - 在DockPanel中有5个TextBlocks绑定到ViewModel,IsAsync = False(因为滚动中缓慢显示的数据看起来很糟糕)。
还有其他想法吗?