1

分割アプリ テンプレートに基づいて Windows ストア アプリを作成しています。後で使用するために SampleDataSource からデータを保存する最良の方法は何ですか?

私は試した:

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

例外がスローされます:「このタイプのデータはサポートされていません」。

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 に答える