2014-07-17 123 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");