Как сохранить ObservableCollection в приложении Магазина Windows?
Я создаю приложение для Магазина Windows на основе шаблона приложения Split. Каков наилучший способ сохранить данные из SampleDataSource для дальнейшего использования?
Я старался:
Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;
roamingSettings.Values["Data"] = AllGroups;
Выдает исключение: "Данные этого типа не поддерживаются".
1 ответ
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>;
}