#c# #.net #silverlight #xaml #windows-phone-7
#c# #.net #silverlight #xaml #windows-phone-7
Вопрос:
Я начинаю разработку в silverlight для Windows phones. Как я понял, представления xaml в silverlight не имеют состояния.
Как я могу сохранить представление со списком, чтобы после возврата к нему мне не нужно было перезагружать данные в этом представлении?
Вот пример:
допустим, у меня есть несколько элементов списка, в которых есть фотографии, текст и т. Д. Из Интернета. При нажатии на элемент списка я перехожу к подробному просмотру соответствующего элемента. Когда я возвращаюсь назад, перезагрузка списка неэффективна (с точки зрения времени, обработки, пропускной способности и т. Д.). Как я могу сохранить это представление, чтобы мне не приходилось его перезагружать? Можно ли это сделать?
ОБНОВЛЕНИЕ: я только что запустил таймер в представлении и перешел к другому, и когда я вернулся, таймер все еще работал (это была потоковая передача.Таймер), значит ли это, что представления не являются статическими и не уничтожаются при переходе к другим представлениям?
Ответ №1:
Попробуйте использовать Mat laceys Tombstone helper, это упрощает сохранение состояния всех страниц Silverlight, на самом деле в большинстве случаев требуется всего две строки кода на страницу.
Ответ №2:
Представления сами по себе могут быть без состояния, но ничто не мешает им привязываться к состояниям / данным, которые сохраняются во всех представлениях. Silverlight больше похож на настольное приложение, чем на ASP.Сетевое приложение. Если ваш таймер в представлении все еще работает (что и будет), это потому, что представление все еще где-то кэшируется (или сам таймер останавливает удаление представления).
Проблемы с состоянием (в приложении WP7) в большей степени связаны с ограниченным объемом имеющейся у вас памяти, поэтому вам нужно быть осторожным с тем, что вы сохраняете.
Если ваше приложение закрыто и перезапущено, вам нужно будет архивировать данные в изолированном хранилище (если вы не хотите повторно передавать их из Интернета при каждом запуске), но для сохранения в приложении это зависит от того, что вы хотите сохранить между представлениями.