如何在Windows Store应用程序中保存ObservableCollection?

我正在创build基于拆分应用程序模板的Windowsapp store应用 从SampleDataSource保存数据以备后用的最佳方法是什么?

我试过了:

Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings; roamingSettings.Values["Data"] = AllGroups; 

它抛出exception:“这种types的数据不支持”。

Solutions Collecting From Web of "如何在Windows Store应用程序中保存ObservableCollection?"

RoamingSettings只支持运行时数据类型 (除了Uri); 另外,每个设置和总共可以保存多少数据也是有限制的。

对于存储方面,使用RoamingFolder (或者LocalFolder )会更好。

对于序列化方面,您可以尝试DataContractSerializer 。 如果你有一个类像:

 public class MyData { public int Prop1 { get; set; } public int Prop2 { get; set; } } public ObservableCollection<MyData> coll; 

然后写如下

 var f = await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync("data.txt"); using ( var st = await f.OpenStreamForWriteAsync()) { var s = new DataContractSerializer(typeof(ObservableCollection<MyData>), new Type[] { typeof(MyData) }); s.WriteObject(st, coll); 

并阅读这样的

 using (var st = await Windows.Storage.ApplicationData.Current.LocalFolder.OpenStreamForReadAsync("data.txt")) { var t = new DataContractSerializer(typeof(ObservableCollection<MyData>), new Type[] { typeof(MyData) }); var col2 = t.ReadObject(st) as ObservableCollection<MyData>; }