我的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(因为滚动中缓慢显示的数据看起来很糟糕) .

还有其他想法吗?