1

I am creating Windows Store App based on Split App template. What is the best way to save data from SampleDataSource for later use?

I tried:

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

It throws exception: 'Data of this type is not supported'.

4

1 回答 1

5

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>;

}
于 2012-12-18T13:40:42.607 回答