У меня есть ListBox
, который может содержать сотни предметов. Я добавил следующие атрибуты в список, и производительность отличная, даже если я группирую / разгруппирую (используя x как ListCollectionView
)
<ListBox ItemsSource="{Binding x}"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling"/>
Однако, если я установлю ListBox.GroupStyle
на что-либо, даже самое простое из возможных, переключение из сгруппированного -> не в группу займет несколько секунд.
<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
), когда я переключаюсь на разгруппированные, и вынужден восстанавливать их с нуля.
Есть ли способ улучшить производительность здесь? Кто-нибудь может предложить что-то, что я мог бы попробовать или, возможно, ресурс, который я мог бы проверить?