我正在使用 WPFToolkit Accordion 控件,其中手风琴中的项目定义为 TreeView。
对于上下文,这里是 XAML 的相关部分:
<ScrollViewer VerticalScrollBarVisibility="Auto" CanContentScroll="True">
<layoutToolkit:Accordion DockPanel.Dock="Bottom"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ItemsSource="{Binding FoodTypes}"
SelectionMode="ZeroOrOne"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling">
<layoutToolkit:Accordion.ContentTemplate>
<DataTemplate>
<TreeView Margin="0 0 0 0" BorderThickness="0"
ItemsSource="{Binding ChildrenView}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling">
最初我只用一个 TreeView(没有 WPFToolkit Accordian)和一秒钟内加载的 40,000 个项目来实现这一点。
当我在根级别使用手风琴实现结构时,单击扩展器时的加载时间超过 7 秒。这太长了。
我对应用程序进行了概要分析,发现第一级中的 500 个项目正在被递归测量,这导致加载时间增加。看来 Accordion 控件没有使用 UI 虚拟化。有没有办法让手风琴使用 UI 虚拟化?如果没有,有什么办法可以提高手风琴的性能,以便更快地加载第一级项目?