2

我正在使用 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 虚拟化?如果没有,有什么办法可以提高手风琴的性能,以便更快地加载第一级项目?

4

0 回答 0