Сделать VirtualizingStackPanel не для очистки уже загруженных элементов - PullRequest
2 голосов
/ 11 октября 2011

Есть ли способ заставить VirtualizingStackPanel в Windows Phone очищать / повторно виртуализировать элементы, только если они еще не загружены?

Чтобы объяснить немного больше, чего я хочу: Когда я загружаюбольшой список элементов, использующий тяжелый ItemTemplate с изображениями. Я бы использовал VirtualizingStackPanel, чтобы избежать засорения пользовательского интерфейса и подождать, пока все элементы не будут отображены на экране. вниз красиво и медленно в списке.Но проблема в том, что вы снова прокручиваете страницу и просматриваете элементы, которые уже были загружены.Поскольку VirtualizingStackPanel теперь очистил эти элементы, они должны быть загружены снова.

Я бы хотел, чтобы те элементы, которые уже загружены, не подлежали очистке.

Я неЯ не знаю, как они это делают, но приложение IMDb, похоже, использует что-то подобное для своего списка фильмов top 250 и bottom 100 .Я также заметил, что они не загружают изображения во время прокрутки, поэтому он не забивает пользовательский интерфейс, если вы не стоите в списке.

Любая помощь очень ценится!

1 Ответ

2 голосов
/ 11 октября 2011

Так же, как предупреждение, мой совет исходит от фона WPF, а не Silverlight или WP7. Но по моему опыту они ничем не отличаются.

Сначала я бы проверил, помогает ли изменение VirtualizationMode . Установка его на Recycling может уже повысить вашу производительность.

В противном случае будет немного сложнее делать то, что вы хотите. Вам нужно будет создать свою собственную VirtualizingPanel и настроить ее для динамического управления созданием элементов. Вы найдете хороший набор статей здесь . Но вместо того, чтобы убрать «когда-то видимые, но теперь снова виртуализированные элементы», вы просто сохраняете их, чтобы получить в итоге все реализованные элементы. Я знаю, что это немного расплывчато, у меня есть код, который я использую для нашей пользовательской панели инструментов, если необходимо, я могу опубликовать некоторые из них, чтобы объяснить, как это сделать. (Опять же без гарантии, что это работает для WP7, а также).

С наилучшими пожеланиями

...