虚拟堆栈面板的主要缺点是什么?如果没有任何缺点,为什么它不被默认作为ItemsControl面板行为/模板呢?
VirtualizingStackPanel
类的MSDN页面上有以下说明:“虚拟化”一词是指一种技术,通过该技术可以从更多的数据项中生成UI元素的子集,基于哪些项目在屏幕上可见。
和仅当包含在面板中的项控件创建自己的项容器时,堆栈面板中才会发生虚拟化。
和VirtualizingStackPanel
是ListBox
元素的默认项宿主。
StackPanel
作为按钮、文本块等的宿主的“常规”用途,虚拟化不会提供任何优势,甚至可能会带来性能开销。但当在ListBox
中使用时,虚拟化确实具有好处,因为a) 项容器由项控件创建,并且b) 列表中的元素数量可能超过屏幕上同一时间可显示的数量。