我正在基于Split App模板创建Windows应用商店应用。从SampleDataSource保存数据供以后使用的最佳方法是什么?
我试过了:
Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;
roamingSettings.Values["Data"] = AllGroups;
它抛出异常:'不支持此类型的数据'。
答案 0 :(得分:5)
RoamingSettings仅支持runtime data types(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>;
}