无法从WP7应用程序中的独立存储设置中检索可观察集合

时间:2012-01-27 13:05:32

标签: c# windows-phone-7

我将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类型的简单列表。

3 个答案:

答案 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)

尝试使用添加功能在词典中添加数据 像

isolatedstorege.Add(key,value);

这样它就会增加值more