IsolatedStorage设置需要更新?

时间:2010-11-29 16:02:34

标签: windows-phone-7 isolatedstorage

我在WP7上使用IsolatedStorageSettings来存储对象列表:

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 个答案:

答案 0 :(得分:2)

您可以在设置上明确调用Save()或等待应用正常关闭,然后自动保存。

作为一般规则,我建议您在更改设置后始终明确保存设置。 (除非你有充分的理由不这样做。)

在您的情况下发生的情况是您按下了启动按钮,导致您的应用程序显示为墓碑。当您启动应用程序的新实例时,逻辑删除版本将被销毁,而不会执行通常在应用程序关闭时运行的所有代码(包括自动保存设置)。

以下是使用保存的示例:

var settings = IsolatedStorageSettings.ApplicationSettings;

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

settings.Add("some-key", "my-new-value");
settings.Save();

答案 1 :(得分:1)

是的,你必须再次保存你的清单。将隔离存储视为文件系统 - 您不希望能够从磁盘加载XDocument,在内存中进行更改并自动 查看磁盘上反映的那些更改,是否?嗯,隔离存储也一样。