Правильное использование виртуализации StackPanel в WPF
-
24-10-2019 - |
Вопрос
Кто -нибудь может сказать мне, как правильно использовать виртуализацию StackPanel в WPF? Я установил виртуализацию StackPanel в своих элементах, чтобы OpersPanEltemplate для моих предметов Control и установил его как свой элемент, но когда я регистрирую слушателя для прикрепленного события CleanupVirtizedItem для управления моими элементами, ничего не происходит. Я не вижу, чтобы событие вызвано. Я также не вижу ни одного из разгруженных событий на пользовательских элементах управления в моем шаблоне данных, которые вызываются, указывая мне, что фактической виртуализации не происходит. Любая помощь приветствуется.
Решение
Попробуйте вместо этого использовать ListBox или ListView:
<ListBox ItemsSource="{Binding Items}"
VirtualizingStackPanel.VirtualizationMode="Recycling"
VirtualizingStackPanel.CleanUpVirtualizedItem="ItemsControl_CleanUpVirtualizedItem">
</ListBox>
Listbox автоматически обрабатывает виртуализацию элементов - есть немного больше ручной работы, если вы создадите виртуализацию StackPanel напрямую. Это потому что У ControlTemplate для элементов по умолчанию нет ScrollViewer, который является ключом к виртуализации - больше информации здесь.