大量のネストされたデータを含むWPFツリービューがあります。ロードされているデータの観点から仮想化を有効にしています。しかし、全体のビューが一度スクロールされるまでスクロールが不安定になり、何(何もない)が落ち着きます。 ScrollViewerをオーバーライドして、スクロール中にVirtualizingStackPanel内のHeightが不当に変化することがわかりました。ツリービューの仮想化と誤ったスクロール
誰でもこれを解決する方法を知っていますか?
ヘルプは評価されています。以下のTreeView XAMLの
関連セクション:ItemsPresenter
内のすべてのアイテム(およびTreeView
は、ネストされたItemsPresenters
とItemsPresenter
として実装されている)場合
<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