【问题标题】:VirtualizingStackPanel on a Treeview ist not VirtualizingTreeview 上的 VirtualizingStackPanel 不是虚拟化
【发布时间】:2011-04-29 14:18:56
【问题描述】:

我有一个问题,我想在 TreeView 中显示一些项目,大约 100.000 个元素。 如果我使用默认的 WPF TreeView,一切似乎都可以工作,但如果我使用自定义 TreeView(目前只有一个 ItemsControl),虚拟化似乎不再起作用。 在网上研究时,我尝试了一些解决方案,但似乎都没有奏效...... 这是我的 xaml:

<Style TargetType="{x:Type my:MultiSelectionTreeView}">
    <Setter Property="TreeView.Background" Value="Transparent"/>
    <Setter Property="VirtualizingStackPanel.IsVirtualizing" Value="True"/>
    <Setter Property="VirtualizingStackPanel.VirtualizationMode" Value="Recycling"/>
    <Setter Property="TreeView.OverridesDefaultStyle" Value="True" />
    <Setter Property="ItemsControl.ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel IsItemsHost="True"/>
            </ItemsPanelTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="TreeView.Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type my:MultiSelectionTreeView}">
                <Border Background="{TemplateBinding Background}"
                    BorderBrush="{TemplateBinding BorderBrush}"
                    BorderThickness="{TemplateBinding BorderThickness}">
                    <ScrollViewer Focusable="True" CanContentScroll="true" 
                                  Padding="4" 
                                  VerticalScrollBarVisibility="Auto">
                        <ItemsPresenter HorizontalAlignment="Stretch"/>
                    </ScrollViewer>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

项目位于带有 DataBinding 的 ObservableCollection 中,所以这不应该是问题......但它是什么???

你好,

于尔根

【问题讨论】:

    标签: c# wpf treeview virtualizingstackpanel


    【解决方案1】:

    VirtualizingStackPanel 有一些特殊的代码用于查找 TreeView 和 TreeViewItem。此外,TreeViewItem 实现了VirtualizingStackPanel.IProvideStackingSize,这是一个您无法实现的内部接口。

    因此,如果您试图复制 TreeView 中项目的层次结构,那么您必须从 TreeView 派生才能使用虚拟化(而不是 ItemsControl)。

    【讨论】:

    • grmph,一切皆有可能,但如果你看得足够深入,就会有很多不规则和限制......哦,好吧,就这样吧。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-08-12
    • 2017-06-27
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 2011-07-14
    • 1970-01-01
    相关资源
    最近更新 更多