我刚注意到,如果我在HubSection中的UWP应用程序中放置了GridView或ListView,则UI虚拟化会中断。我的理解是否正确?
由于
答案 0 :(得分:2)
仅对视口外的项目进行虚拟化。因此,将GridView
放入限制其大小的控件(例如Grid
没有自动调整大小的行/列)或设置控件的大小非常重要。如果您的HubSection
没有固定的尺寸,我不会感到惊讶。
视口的概念对于UI虚拟化至关重要,因为 框架必须创建可能显示的元素。在 一般来说,ItemsControl的视口是逻辑的范围 控制。例如,ListView的视口是宽度和 ListView元素的高度。一些面板允许子元素 无限空间,例如ScrollViewer和Grid,有 自动调整大小的行或列。放置虚拟化ItemsControl时 在这样的面板中,它需要足够的空间来显示它的所有内容 项目,这打败了虚拟化。通过设置恢复虚拟化 ItemsControl上的宽度和高度。
自定义模板通常会破坏虚拟化:
如果您提供自定义项面板模板(请参阅ItemsPanel) 确保使用诸如ItemsWrapGrid之类的虚拟化面板 ItemsStackPanel。如果您使用VariableSizedWrapGrid,WrapGrid或 StackPanel,那么你就不会得到虚拟化。