Правильное использование VirtualizingStackPanel в WPF
Может кто-нибудь сказать, пожалуйста, как правильно использовать VirtualizingStackPanel в WPF? Я установил VirtualizingStackPanel в моем ItemsPanelTemplate для моего ItemsControl и установил его как мой ItemsHost, но когда я регистрирую прослушиватель для присоединенного события CleanUpVirtualizedItem на моем элементе управления ничего не происходит. Я не вижу, чтобы событие было вызвано. Также я не вижу ни одного события Unloaded на пользовательских элементах управления в моем шаблоне данных, вызываемых, что указывает на то, что виртуализация не происходит. Любая помощь приветствуется.
1 ответ
Попробуйте вместо этого использовать ListBox или ListView:
<ListBox ItemsSource="{Binding Items}"
VirtualizingStackPanel.VirtualizationMode="Recycling"
VirtualizingStackPanel.CleanUpVirtualizedItem="ItemsControl_CleanUpVirtualizedItem">
</ListBox>
ListBox автоматически обрабатывает виртуализацию элементов - если вы создадите VirtualizingStackPanel напрямую, вам потребуется немного больше ручного труда. Это связано с тем, что в ControlTemplate по умолчанию для ItemsControl нет ScrollViewer, который является ключом к виртуализации - больше информации здесь.