有没有办法在ListBox中分组时启用容器回收?

时间:2011-09-05 13:21:20

标签: c# wpf performance xaml listbox

我有一个ListBox,可以包含数百个项目。我已经将以下属性添加到列表框中,性能很好,即使我分组/取消组合(使用x作为ListCollectionView

<ListBox ItemsSource="{Binding x}"
        VirtualizingStackPanel.IsVirtualizing="True"
        VirtualizingStackPanel.VirtualizationMode="Recycling"/>

但是,如果我将ListBox.GroupStyle设置为任何内容,即使是最简单的事情,也需要几秒钟才能从分组切换 - &gt;未分组。

<ListBox.GroupStyle>
    <GroupStyle>
        <GroupStyle.ContainerStyle>
            <Style TargetType="GroupItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <ItemsPresenter/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </GroupStyle.ContainerStyle>
    </GroupStyle>
</ListBox.GroupStyle>

我认为原因是当我切换到未分组时,WPF正在丢弃容器的缓存(在VirtualizingStackPanel中由循环模式启用)并且必须从头开始重建它们。

有没有办法改善这里的表现?任何人都可以建议我可以尝试的东西,或者我可以查看的资源吗?

1 个答案:

答案 0 :(得分:0)

查看这篇文章,也许会有所帮助

WPF: Data Virtualization

我也在stackoverflow上发现了类似的问题:WPF ListView Virtualization Grouping

和另一个(即使有答案)WPF Data virtualizing ListView