2

TreeViewとして定義されたアコーディオン内のアイテムでWPFToolkitアコーディオンコントロールを使用しています。

コンテキストとして、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個のアイテムを1秒以内にロードしました。

ルートレベルでアコーディオンを使用して構造を実装すると、エキスパンダーをクリックしたときの読み込み時間が7秒以上になりました。これは長すぎです。

アプリケーションのプロファイルを作成したところ、最初のレベルの500項目が再帰的に測定されており、ロード時間が長くなっていることがわかりました。アコーディオンコントロールがUI仮想化を使用していないようです。アコーディオンにUI仮想化を使用させる方法はありますか?そうでない場合は、アコーディオンのパフォーマンスを向上させて、第1レベルのアイテムをより迅速にロードする方法はありますか?

4

0 に答える 0