gpt4 book ai didi

WPF : TreeView virtualization not working

转载 作者:行者123 更新时间:2023-12-04 15:04:18 25 4
gpt4 key购买 nike

如果 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>

我有一个不是虚拟化的,当我展开节点(并使用 snoop 来检查)时,我创建了所有的 TreeViewItems。我想知道是否有一些容器组合会阻止 TreeView 虚拟化其内容。 (例如将其托管在 StackPanel 中)

最佳答案

问题出在样式上。经过一些研究,我们发现有一种未命名的样式针对 TreeView(即带有 DataType={x:Type TreeView} 没有 x:Key 的样式)和一种针对 TreeViewItem 的样式。在我们的 App.xaml(或等效文件)中,它覆盖了 ControlTemplate分别为每个。

这些样式没有设置 ItemsPanel 的触发器。到 VirtualizingStackPanel并且没有提到任何虚拟化。删除样式后,TreeView 工作正常。即使本地属性设置了 ItemsPanelVirtualizingStackPanel.Isvirtualizing="True"TreeView这些属性没有被传播到 TreeViewItems所以 TreeView 的顶层会虚拟化,而子类别不会(因为它们的虚拟化行为取决于 TreeViewItem )

关于WPF : TreeView virtualization not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4241255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com