在WPFToolkit手风琴上启用UI虚拟化

我正在使用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虚拟化?如果没有,是否有任何方法可以提高手风琴的性能,以便更快地加载第一级物品?     
已邀请:
我能够通过使用Bea Stollnitz在她的博客中描述的方式实现一个分层树来解决这个问题,该文章“有什么技巧可以帮助我提高TreeView的性能吗? - 第三部分”http:// bea.stollnitz.com/blog/?p=45。这让我使用虚拟化堆栈面板,因为它为WPF ListView提供了支持。它在本文中解释了您不能在WPF树视图中虚拟化堆栈面板。因此,如果您需要数据虚拟化,目前最好的解决方案是使用ListBox或ListView实现分层树。这并不难,我现在有很好的表现。     

要回复问题请先登录注册