IsolatedStorageSettings нуждается в обновлении? - PullRequest
0 голосов
/ 29 ноября 2010

Я использую IsolatedStorageSettings в WP7 для хранения списка объектов:

List<T>

Мне нужно выполнить поиск элемента в моем списке и обновить некоторые свойства искомого элемента.

Я использую этот код:

List<Article> listArt = null;
IsolatedStorageSettings.ApplicationSettings.TryGetValue("ArticleListStorage", out listArt);

var queryList = (from anItem in listArt where (anItem.Id == _id) select anItem).ToList<Article>();

a = queryList[0] as Article;

//mark Article as read
a.Readed = true;

Когда я постоянно перемещаюсь по разным страницам внутри приложения, я вижу, что свойство Readed правильно оценено.

Но когда я нажимаю на кнопку «Пуск» WP7 и снова открываю свое приложение ( без эмулятора закрытия ), я вижу, что свойство оценивается неправильно.

Нужно ли мне обновлять свой объект внутри списка и так внутри изолированного хранилища?

Не обновляется по ссылке?

Я пробовал также это, и это не работает:

listArt[0].Readed = true;
listArt[0].Favorite = true;

IsolatedStorageSettings.ApplicationSettings["ArticleListStorage"] = listArt;

IsolatedStorageSettings.ApplicationSettings.Save();

Что не так?

Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 29 ноября 2010

Вы можете явно вызвать Save () в настройках или подождать, пока приложение нормально закроется, и тогда они будут сохранены автоматически.

Как правило, я бы рекомендовал всегда явно сохранять настройки после их изменения. (Если у вас нет очень веских причин не делать этого.)

То, что происходит в вашей ситуации, заключается в том, что вы нажимаете кнопку запуска, которая приводит к тому, что ваше приложение становится надгробным. Когда вы запускаете новый экземпляр приложения, захороненная версия уничтожается без выполнения всего кода, который обычно выполняется при закрытии приложения (включая параметры автосохранения).

Вот пример использования Save:

var settings = IsolatedStorageSettings.ApplicationSettings;

if (settings.Contains("some-key"))
{
    settings.Remove("some-key");
}

settings.Add("some-key", "my-new-value");
settings.Save();
1 голос
/ 29 ноября 2010

Да, вы должны снова сохранить свой список.Думайте об изолированном хранилище как о файловой системе - вы не ожидаете, что сможете загрузить XDocument с диска, внести изменения в память и автоматически увидеть эти изменения, отраженные на диске, не так ли?Ну, то же самое с изолированным хранилищем.

...