WP7 Listbox, как работает виртуализация пользовательского интерфейса

Я использую ListBox, который имеет VirtualizingStackPanel, который, как говорят, поддерживает виртуализацию пользовательского интерфейса по умолчанию.

Однако, когда я устанавливаю свой listStudent (типа ObservableCollectionи 5 студентов) ItemsSource для меня Listbox, Затем всякий раз, когда пользователь прокручивает до конца, я добавляю еще 5 учеников в свой listStudent (и, конечно, пользовательский интерфейс уведомляется). Но я вижу, что потребление памяти увеличивается. Там не отличается от StackPanel в плане памяти

Как работает виртуализация пользовательского интерфейса? Как сохранить мало памяти при добавлении нового элемента в listStudent?

3 ответа

Решение

Виртуализация означает, что список не создает элементы списка, к которым вы еще не прокрутили.

так что вы можете поместить свой тестовый код в загруженную функцию элемента или в используемый код конвертера. Вы можете увидеть, работает ли виртуализация

например

вы можете привязать конвертер к реквизиту студента и записать его в журнал. затем вы знаете, когда элемент действительно создается

Убедитесь, что вы не изменили ListBoxItemsPanel который разрушает виртуализацию пользовательского интерфейса

Sheldon_Xiao указывает на некоторые ссылки на MSDN, которые помогают объяснить виртуализацию пользовательского интерфейса.

Другие вопросы по тегам