我有一个 ListBox
,其中包含许多模板化的数据库记录行,包括一个 Image
,绑定到一个 ObservableCollection<MyItem>
。有时集合可能会包含数千个项目。
性能很好,但滚动是默认的跳跃行为。我想让它具有平滑的滚动效果,因此取消了 ScrollViewer.CanContentScroll
。
现在我拥有平滑的滚动效果,但性能非常差:数据在单独的线程中检索,线程很快结束,但需要 10-20 秒才能在 ListBox
中显示结果。我认为这是因为取消 ScrollViewer.CanContentScroll
将底层的 VirtualizingStackPanel
改变成普通的 StackPanel
,所以它在显示结果之前加载整个集合。
那么我的问题是:如何在不牺牲 VirtualizingStackPanel
的行为和性能的情况下保留平滑的滚动效果?