Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列表框、虚拟化StackPanel和WPF中的平滑滚动_Wpf_Performance_Listbox_Scroll_Virtualizingstackpanel - Fatal编程技术网

列表框、虚拟化StackPanel和WPF中的平滑滚动

列表框、虚拟化StackPanel和WPF中的平滑滚动,wpf,performance,listbox,scroll,virtualizingstackpanel,Wpf,Performance,Listbox,Scroll,Virtualizingstackpanel,我有一个列表框,其中可能有许多行模板化的DB记录,包括绑定到可观察集合的图像。有时,收藏品可以容纳数千件物品 性能很好,但是滚动是默认的跳跃行为。我希望它能够平滑滚动,所以我取消选中了ScrollViewer.CanContentScroll 现在我有了平滑的滚动,但性能非常糟糕:数据在一个单独的线程中检索,线程很快完成,但结果显示在列表框中需要10-20秒。我假设这是因为取消选中ScrollViewer.CanContentScroll将底层的VirtualizangStackPanel更改为

我有一个
列表框
,其中可能有许多行模板化的DB记录,包括绑定到
可观察集合的
图像
。有时,收藏品可以容纳数千件物品

性能很好,但是滚动是默认的跳跃行为。我希望它能够平滑滚动,所以我取消选中了ScrollViewer.CanContentScroll

现在我有了平滑的滚动,但性能非常糟糕:数据在一个单独的线程中检索,线程很快完成,但结果显示在
列表框中需要10-20秒。我假设这是因为取消选中ScrollViewer.CanContentScroll将底层的
VirtualizangStackPanel
更改为常规的
StackPanel
,因此它在显示结果之前加载整个集合


因此,我的问题是:如何在不牺牲
虚拟化StackPanel
行为和性能的情况下保持平滑滚动?

当取消选中CanContentScroll时,您将看到。答案确实令人沮丧:目前还没有现成的解决方案:(

附:这不是第一篇发帖,问你问题。

如果你使用.NET4.5(或者4.0,如果你愿意稍微修改一下),那么有一个答案


[请注意,@Guilluame的评论就在这个答案之前,但在浏览答案时并不特别明显。]

我很害怕,但不得不问。我在问之前搜索了一下,但没有找到那篇文章。我可能会再挖一点,但时间有限,所以我现在不得不放弃平滑滚动。如果你准备使用一点技巧,你可以同时使用平滑滚动和虚拟化。有关详细信息,请查看类似问题。VirtualzingPanel.ScrollUnit=“像素”