Ara*_*and 6 wpf treeview virtualization ui-virtualization
如果TreeView设置如下,什么可以阻止TreeView虚拟化?
<TreeView
ItemsSource="{Binding}"
VirtualizingStackPanel.IsVirtualizing="True">
<TreeView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</TreeView.ItemsPanel>
<TreeView.ItemContainerStyle>
<Style
TargetType="{x:Type TreeViewItem}">
<Setter
Property="IsExpanded"
Value="{Binding IsExpanded, Mode=TwoWay}"/>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
Run Code Online (Sandbox Code Playgroud)
我有一个不虚拟化的,当我扩展节点(并使用snoop检查)时,我已经创建了所有的TreeViewItems.我想知道是否有一些容器组合会阻止TreeView虚拟化其内容.(比如在StackPanel中托管它)
问题在于造型.经过一些研究,我们发现有一个未命名的样式针对TreeView(即一个DataType={x:Type TreeView}没有a x:Key)和一个目标TreeViewItem在我们的App.xaml(或等效的)它分别覆盖了ControlTemplate每个.
这些样式没有设置ItemsPanel为a 的触发器VirtualizingStackPanel,也没有提及任何虚拟化.删除样式后,TreeView工作正常.即使本地属性设置ItemsPanel和VirtualizingStackPanel.Isvirtualizing="True"对TreeView这些属性没有被传播到了TreeViewItems树视图,以便顶层将虚拟化而子类就不会(作为其虚拟化的行为是依赖于TreeViewItem)