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