Правильное использование виртуализации StackPanel в WPF

StackOverflow https://stackoverflow.com/questions/4788698

Вопрос

Кто -нибудь может сказать мне, как правильно использовать виртуализацию StackPanel в WPF? Я установил виртуализацию StackPanel в своих элементах, чтобы OpersPanEltemplate для моих предметов Control и установил его как свой элемент, но когда я регистрирую слушателя для прикрепленного события CleanupVirtizedItem для управления моими элементами, ничего не происходит. Я не вижу, чтобы событие вызвано. Я также не вижу ни одного из разгруженных событий на пользовательских элементах управления в моем шаблоне данных, которые вызываются, указывая мне, что фактической виртуализации не происходит. Любая помощь приветствуется.

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top