我将observable集合存储在我的应用程序隔离存储设置中。该列表在应用程序退出期间成功保存。但是当我再次启动应用程序时,它无法从隔离存储中找到存储的密钥。
这是我的代码
void LoadSettings()
{
if (settings.Contains("DiaryItems"))
{
diaryItems = (ObservableCollection<MyDiaryItem>)settings["DiaryItems"];
}
}
void SaveSettings()
{
settings["DiaryItems"] = diaryItems;
}
我在应用程序关闭和应用程序停用期间调用了SaveSettings
方法。
我在应用程序启动和应用程序激活期间调用了LoadSettings
方法。
当我调试时,我可以看到错误说
'settings [“DiaryItems”]'抛出类型
的例外 'System.Collections.Generic.KeyNotFoundException'
只是想知道设置有什么问题。相同的代码适用于List类型的简单列表。
答案 0 :(得分:2)
实际上当你想在IsolatedStorage中存储任何项目时,你必须调用ApplicationSettings函数的保存
所以修改你的保存功能,如下,
void SaveSettings()
{
settings["DiaryItems"] = diaryItems;
settings.Save();
}
抱歉,我忘了提及您的MyDiaryItem应该是可以正确序列化的。
答案 1 :(得分:2)
请注意为什么它不起作用,但您可以尝试将ObservableCollection包装在列表中:
void LoadSettings()
{
if (settings.Contains("DiaryItems"))
{
diaryItems = new ObservableCollection<MyDiaryItem>((List<MyDiaryItem>)settings["DiaryItems"]);
}
}
void SaveSettings()
{
settings["DiaryItems"] = diaryItems.ToList();
}
您需要在文件顶部放置using System.Linq;
,否则“ToList”将无效。
答案 2 :(得分:0)