WP7 Listbox, как работает виртуализация пользовательского интерфейса
Я использую ListBox, который имеет VirtualizingStackPanel
, который, как говорят, поддерживает виртуализацию пользовательского интерфейса по умолчанию.
Однако, когда я устанавливаю свой listStudent (типа ObservableCollection
и 5 студентов) ItemsSource
для меня Listbox
, Затем всякий раз, когда пользователь прокручивает до конца, я добавляю еще 5 учеников в свой listStudent (и, конечно, пользовательский интерфейс уведомляется). Но я вижу, что потребление памяти увеличивается. Там не отличается от StackPanel
в плане памяти
Как работает виртуализация пользовательского интерфейса? Как сохранить мало памяти при добавлении нового элемента в listStudent?
3 ответа
Виртуализация означает, что список не создает элементы списка, к которым вы еще не прокрутили.
так что вы можете поместить свой тестовый код в загруженную функцию элемента или в используемый код конвертера. Вы можете увидеть, работает ли виртуализация
например
вы можете привязать конвертер к реквизиту студента и записать его в журнал. затем вы знаете, когда элемент действительно создается
Убедитесь, что вы не изменили ListBox
ItemsPanel
который разрушает виртуализацию пользовательского интерфейса
Sheldon_Xiao указывает на некоторые ссылки на MSDN, которые помогают объяснить виртуализацию пользовательского интерфейса.