我在XAML中有一个带有多个层级的TreeView。使用这个解决方案,可以为每个不同的层级获取一个配置好的 XAML 样式,已确认它具备UI虚拟化。
然而,当我将特定层级的VirtualizingStackPanel切换到具有不同方向的(无论是通过这个解决方案的代码还是使用Snoop)时,UI 虚拟化就会关闭,当我展开该层级时,TreeView就会立即实现所有TreeViewItem。
在研究这种行为时,我注意到在VirtualizingStackPanel的参考源代码中, 当您深入它的MeasureOverride函数时,您会发现第2116行上的此注释:
计算此面板是否与其父级或后代具有不同的方向
似乎微软已经有意地禁用了这种情况下UI虚拟化。所以我有两个问题:
- 为什么在层之间保持方向一致性很重要?
- 如何让UI虚拟化在TreeView中具有不同的方向?