У меня есть дерево WPF с большим объемом вложенных данных. Я включил виртуализацию, которая работает с точки зрения загружаемых данных. Но прокрутка стала неустойчивой до тех пор, пока весь вид не прокручивается один раз, а затем окупит некоторые (еще не большие). Я переопределяю ScrollViewer, и я вижу, что высота Height в VirtualizingStackPanel изменяется с ошибкой во время прокрутки.Виртуализация Treeview и неустойчивая прокрутка
Кто-нибудь знает, как это можно решить?
Любая помощь приветствуется.
Соответствующие разделы TreeView Xaml ниже:
<TreeView ItemsSource="{Binding Folders.ObservableTree}" Name="FoldersTreeView"
AutomationProperties.AutomationId="foldersview_treeview_folders" TabIndex="0" PreviewMouseRightButtonDown="OnPreviewMouseRightButtonDown"
VirtualizingStackPanel.CleanUpVirtualizedItem="VirtualizingStackPanel_OnCleanUpVirtualizedItem"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.IsDeferredScrollingEnabled ="True"
VirtualizingStackPanel.IsVirtualizing="True"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
VirtualizingStackPanel.ScrollUnit="Pixel"
VirtualizingStackPanel.VirtualizationMode="Standard"
VirtualizingPanel.IsVirtualizingWhenGrouping="True"
VirtualizingStackPanel.CacheLengthUnit="Item">
<TreeView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel IsItemsHost="True" CanVerticallyScroll="True"/>
</ItemsPanelTemplate>
</TreeView.ItemsPanel>
<TreeView.Template>
<ControlTemplate>
<view:ScrollViewer2 Padding="{TemplateBinding Control.Padding}" Focusable="False" Name="TreeViewScrollViewer"
CanContentScroll="True">
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
</view:ScrollViewer2>
</ControlTemplate>
</TreeView.Template>
Вы нашли решение на это? – Yvonnila
К сожалению, я этого не делал, я заменил элемент управления DevExpress TreeListView, поскольку у нас есть подписка на него, у этого есть некоторые встроенные оптимизации и хорошо работает. – Sjblack