【发布时间】:2014-12-14 04:08:48
【问题描述】:
使用以下代码 ListBox 在滚动期间跳转到下一组。由于一组显示的项目多于屏幕,因此用户永远不会看到该组的所有项目。 由于我有很多项目,我需要虚拟化。
设置CanContentScroll="False" 解决了这个问题,但随后虚拟化消失了,UI 挂起 20 秒。有没有办法解决这个问题?
<ListBox
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"
ScrollViewer.CanContentScroll="True">
<ListBox.GroupStyle>
<GroupStyle HidesIfEmpty="True">
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Expander IsExpanded="True">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Type}" />
...
</StackPanel>
</Expander.Header>
<ItemsPresenter />
【问题讨论】:
-
您使用的是什么版本的 WPF。分组和虚拟化在 v4.5 中得到修复
-
@WaltRitscher 我正在使用框架 4.5。如果我记得在 3.5 中根本没有虚拟化。