Есть ли способ включить переработку контейнеров при группировке в ListBox? - PullRequest
1 голос
/ 05 сентября 2011

У меня есть 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), когда я переключаюсь на разгруппированные, и вынужден восстанавливать их с нуля.

Есть ли способ улучшить производительность здесь? Кто-нибудь может предложить что-то, что я мог бы попробовать или, возможно, ресурс, который я мог бы проверить?

1 Ответ

0 голосов
/ 05 сентября 2011

Проверьте этот пост, может быть, это будет полезно

WPF: виртуализация данных

Также я нашел похожий вопрос по stackoverflow: WPF ListView Virtualization Grouping

и еще один (даже с ответом) WPF Виртуализация данных ListView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...