虚拟化堆栈面板的缺点是什么?

4
虚拟堆栈面板的主要缺点是什么?如果没有任何缺点,为什么它不被默认作为ItemsControl面板行为/模板呢?
1个回答

3
VirtualizingStackPanel类的MSDN页面上有以下说明:
引用如下:

“虚拟化”一词是指一种技术,通过该技术可以从更多的数据项中生成UI元素的子集,基于哪些项目在屏幕上可见。


引用如下:

仅当包含在面板中的项控件创建自己的项容器时,堆栈面板中才会发生虚拟化。


引用如下:

VirtualizingStackPanelListBox元素的默认项宿主。

从这些内容来看,对于将StackPanel作为按钮、文本块等的宿主的“常规”用途,虚拟化不会提供任何优势,甚至可能会带来性能开销。但当在ListBox中使用时,虚拟化确实具有好处,因为a) 项容器由项控件创建,并且b) 列表中的元素数量可能超过屏幕上同一时间可显示的数量。

因此,在创建自定义面板而不修改项目容器样式的情况下,没有特殊优势。我曾经有一个生成20K个项目的场景。我尝试在虚拟化项目控件中显示它们,但事实上,在Grid面板中显示速度更快。感谢提供精确的信息。 :) - Prince Ashitaka

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