将ObservableCollection保存到隔离存储中

4

我正在开发一个笔记应用程序,用户可以创建、编辑和删除笔记。一旦应用程序关闭,所有数据都应该存储在隔离存储中。我创建了一个笔记类,设置了以下一些属性:

    public string strNoteName { get; set; }
    public string strCreated { get; set; }
    public string strModified { get; set; }
    public bool boolIsProtected { get; set; }
    public string strNoteImage { get; set; }
    public string strNoteSubject { get; set; }
    public string strTextContent { get; set; }

这些内容被放入了一个名为ObservableCollection<note> GetnotesRecord()的集合中,可以使用列表框在Mainpage中显示。触摸时有一个SelectionChange事件处理程序,它将项目传递到editpage,其中可以编辑诸如strTextContent和strNoteName之类的项目。
在添加所有这些内容之后,希望能将数据保存到隔离存储中,以便下次运行应用程序时可以加载。
是否可能保存ObservableCollection<note>?如果是,请问如何在稍后启动应用程序时从隔离存储中检索它?

你应该更新标题,明确表明你想要找出如何在WP8应用程序中持久化值,而不是描述你的应用程序是关于什么的。 - mason
1
提示:避免使用匈牙利命名法,使用 PascalCase 来命名公共成员。 - Dai
你尝试过保存你的集合吗?当你尝试时发生了什么?如果你不确定如何保存对象,你是否研究过序列化?关于保存列表,你做了哪些研究? - Patrick
这有点重复,尽管它没有任何被接受的答案:http://stackoverflow.com/questions/18197696/isolated-storage-saving-multiple-objects?rq=1 - Patrick
1个回答

3
步骤:-
如果您的集合很大,则将ObservableCollection转换为xml字符串,并使用IsolatedStorageSettings类将其存储为键值对。
如果不是:则可以直接使用IsolatedStorageSettings。
IsolatedStorageSettings Store { get { return IsolatedStorageSettings.ApplicationSettings; } }

    public T GetValue<T>(string key)
    {
        return (T)Store[key];
    }

    public void SetValue(string token, object value)
    {
        Store.Add(token, value);
        Store.Save();
    }

使用方法:

    ObservableCollection<Note> objCollection = new ObservableCollection<Note>()
    {
        new Note(){Checkbool = false,Checkme = "sd"},
        new Note(){Checkbool = false,Checkme = "sd1"},
        new Note(){Checkbool = false,Checkme = "sd2"}
    };

    // you can also make check whether values are present or 
    // by checking the key in storage.
    var isContainKey = Store.Contains("set")

    // save key value pair
    SetValue("set", objCollection); 

    // extract key value pair
    var value = GetValue<ObservableCollection<Note>>("set"); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接