2014-07-17 120 views
4

我正在制作笔记记录应用程序,用户可以在其中创建,编辑和删除笔记。应用程序关闭后,所有数据都应存储在独立存储中。我创建了一个笔记类设置下面的一些特性:将ObservableCollection保存到独立存储中

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()它可以显示在使用列表框的网主页。在触摸处有一个SelectionChange事件处理程序,它将项目传递到编辑页面,其中可以编辑诸如strTextContent和strNoteName之类的项目。

加入这事以后,我希望将数据保存到独立存储,因此它可以被加载下一次应用程序运行。

是否可以保存ObservableCollection<note>?如果是的话,当我以后启动应用程序时,如何从隔离存储中检索?

+0

您应该更新您的标题作出针锋相对清楚你要弄清楚如何坚持WP8应用程序的价值观,而不是描述你的应用程序的内容。 – mason

+1

提示:避免使用匈牙利符号并为公共会员使用“PascalCase”。 – Dai

+0

您是否尝试保存您的收藏?当你尝试时发生了什么?如果你不确定如何保存对象,你看看序列化?你在保存列表方面做了什么研究? – Patrick

回答

3

步骤: -

如果集合是大那么你的ObservalbleCollection转换成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");