Jac*_*zek 1 c# windows windows-8 windows-runtime
我正在基于Split App模板创建Windows应用商店应用.从SampleDataSource保存数据以供以后使用的最佳方法是什么?
我试过了:
Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;
roamingSettings.Values["Data"] = AllGroups;
Run Code Online (Sandbox Code Playgroud)
它抛出异常:'不支持此类型的数据'.
RoamingSettings仅支持运行时数据类型(Uri除外); 此外,对于每个设置和总共可以节省多少数据存在限制.
你最好将RoamingFolder(或者也许是LocalFolder)用于存储方面.
对于序列化方面,您可以尝试使用DataContractSerializer.如果你有一个类:
public class MyData
{
public int Prop1 { get; set; }
public int Prop2 { get; set; }
}
public ObservableCollection<MyData> coll;
Run Code Online (Sandbox Code Playgroud)
然后写如下
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);
Run Code Online (Sandbox Code Playgroud)
并且像这样读
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>;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1786 次 |
| 最近记录: |