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レベルのアイテムをより迅速にロードする方法はありますか?