我在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();
有什么问题?
非常感谢你!
答案 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
,在内存中进行更改并自动 查看磁盘上反映的那些更改,是否?嗯,隔离存储也一样。