Правильное использование VirtualizingStackPanel в WPF - PullRequest
2 голосов
/ 25 января 2011

Может кто-нибудь сказать, пожалуйста, как правильно использовать VirtualizingStackPanel в WPF?Я установил VirtualizingStackPanel в моем ItemsPanelTemplate для моего ItemsControl и установил его как мой ItemsHost, но когда я регистрирую прослушиватель для присоединенного события CleanUpVirtualizedItem на моем элементе управления ничего не происходит.Я не вижу, чтобы событие было вызвано.Также я не вижу ни одного события Unloaded на пользовательских элементах управления в моем шаблоне данных, вызываемых, что указывает на то, что в действительности не происходит виртуализация.Любая помощь будет высоко ценится.

1 Ответ

5 голосов
/ 25 января 2011

Попробуйте вместо этого использовать ListBox или ListView:

<ListBox ItemsSource="{Binding Items}"
    VirtualizingStackPanel.VirtualizationMode="Recycling" 
    VirtualizingStackPanel.CleanUpVirtualizedItem="ItemsControl_CleanUpVirtualizedItem">
</ListBox>

ListBox автоматически обрабатывает виртуализацию элементов - если вы создадите VirtualizingStackPanel напрямую, вам придется немного больше поработать вручную. Это связано с тем, что ControlTemplate по умолчанию для ItemsControl не имеет ScrollViewer, который является ключом к виртуализации - дополнительная информация здесь .

...