WPF Wrap面板相比虚拟Wrap面板速度较慢的原因是什么?

4
我听说WrapPanel加载东西比较慢,因此我们需要一个虚拟化面板。
有没有人能给我一个小的WrapPanel示例,证明它加载速度较慢,并且需要虚拟化面板。
我将WrapPanel设置为ListBox的面板控件,并向其中添加了10000个字符串对象,这并不是问题。我相信我的示例很傻,也许我必须编写一个业务对象并创建一个更大的数据模板才能看到这个问题的实际效果。
请提供一个能够证明WrapPanel没有虚拟化会变慢的示例。
谢谢。
2个回答

3
我认为性能问题主要取决于树中可视对象的数量。
默认的ListBoxItem模板由少量元素组成(我认为是边框和文本块)。如果您有一个模板,它创建了一个每个项目有100个可视元素的复杂可视化效果,那么您将得到大量的可视元素,具体数量取决于您的项目计数。
这就是为什么普通面板在加载时间上更慢的原因,因为它必须在启动时创建所有对象,而虚拟化版本只为可见项目创建可视化内容,并且不会丢弃不再显示的可视化内容。
此外,这也对内存使用有影响。

0

最近我在制作插入符号表单时需要这个功能。使用一个带有普通换行面板的列表框作为项目面板,加载时间可能长达5秒。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接