Сохранение информации о состоянии приложения для Магазина Windows

Я только начинаю работать с разработкой для Windows 8 (используя C#) и работаю над переносом одного из моих приложений в приложение для магазина Windows. По сути, мое приложение принимает строку ввода пользователя, вычисляет соответствующий вывод и отвечает пользователю. Поэтому я использую представление списка для отслеживания "разговора". Я отображаю ввод пользователя как элемент представления списка, а затем отображаю вывод как следующий элемент (используя текстовые блоки с форматированием, подобным цвету...).

Я хотел бы, чтобы этот "разговор" продолжался после завершения работы приложения, но я не уверен, что это лучший способ сделать это. Моей первой мыслью было сериализовать объект представления списка в режиме приостановки, а затем десериализовать его при загрузке, но просмотр списка не сериализуем... Итак, моей следующей мыслью было выписать каждую строку ввода и вывода в файл и попытаться перестроить представление списка из этих строк при загрузке приложения, но у меня также есть некоторые проблемы с этим.

Поэтому мне любопытно, как лучше всего это сделать. Я хотел бы, чтобы приложение снова запустило предыдущую беседу с тем же форматированием, а что нет. У кого-нибудь есть какие-либо идеи?

1 ответ

Решение

В любом случае я бы не сохранил ListView, вам нужно только сохранить данные в нем. Используете ли вы модель типа MVVM, где ваш разговор, возможно, записывается как ObservableCollection и затем привязывается к ListView? Если нет, вы должны:)

Тогда вам просто нужно сериализовать ObservableCollection (см. Один вариант для этого здесь). От того, где вы будете настаивать, зависит от вас:

  • LocalFolder будет использовать файловый подход и будет доступен на локальном устройстве
  • RoamingFolder также будет использовать файловый подход, но синхронизировать с помощью облака на нескольких устройствах, которыми владеет пользователь (и приложение установлено).
  • Облачное хранилище (например, Windows Azure или Windows Azure Mobile Services) предоставит вам практически безграничное хранилище, но требует управления облачной учетной записью и оплаты за нее (хотя бесплатных уровней может быть достаточно)
  • База данных в памяти, такая как SQLite, является еще одним вариантом и даст вам реляционную семантику, если вам это будет интересно.

Чтобы начать, я бы сказал, используйте LocalFolder и сохраняйте свою коллекцию в файл, а затем при повторной ее регенерации простая привязка данных должна автоматически обрабатывать отображение. В какой-то момент вам может потребоваться принять решение о том, сколько хранить. Вы хотите, чтобы ваше приложение реагировало на пользователя ("быстро и плавно"), поэтому для этого вам может понадобиться вводить данные по требованию по сравнению со всеми сразу (возможно, функция версии 2!)

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