【问题标题】:Saving ObservableCollection to isolated storage将 ObservableCollection 保存到隔离存储
【发布时间】:2014-07-18 19:03:52
【问题描述】:

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

    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>?如果是,我以后启动应用程序时如何从隔离存储中检索它?

【问题讨论】:

  • 你应该更新你的标题,明确表明你想弄清楚如何在你的 WP8 应用程序中保留值,而不是描述你的应用程序是关于什么的。
  • 提示:避免使用匈牙利符号并为公共成员使用PascalCase
  • 您是否尝试保存您的收藏?当你尝试时发生了什么?如果您不确定如何保存对象,您是否研究过序列化?您对保存列表进行了哪些研究?
  • 这是一种重复,虽然它没有任何可接受的答案:stackoverflow.com/questions/18197696/…

标签: c# class xaml windows-phone-8 isolatedstorage


【解决方案1】:

步骤:-

如果您的集合很大,则将您的 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"); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多