我制作了一个通用的Windows商店应用,我有一个ObservableCollection。
我想要的是save
来自ObservableCollection的数据,以便数据可以在具有相同通用应用程序的桌面和手机之间同步,然后我需要get
这个数据,以便我可以更新ObservableCollection。
我之前没有做过这样的事情,所以我不确定如何继续...我是否需要将其保存到XML文件中,如果是这样,我将如何在不同的设备。我知道如何使用的唯一存储方法是:
ApplicationData.Current.LocalSettings.Values["key"] = "something";
//Which stores "something" in local storage with key "key".
ApplicationData.Current.RoamingSettings.Values["key"] = "something";
//Which stores "something" in user's Microsoft account storage with key "key".
我认为最后一个看起来就像我真正想要的那样,但是保存我所有的ObservableCollection项目和属性是不切实际的。
答案 0 :(得分:3)
最简单的方法是将其写入app数据漫游文件夹中的文件中;应用程序设置存储集合不是很方便。您可以使用XML,JSON或其他任何东西。这些天趋势是使用JSON,所以这是一个例子。
序列化:
var folder = ApplicationData.Current.RoamingFolder;
var file = await folder.CreateFileAsync("collection.json", CreationCollisionOption.ReplaceExisting);
using (var stream = await file.OpenStreamForWriteAsync())
using (var writer = new StreamWriter(stream, Encoding.UTF8))
{
string json = JsonConvert.SerializeObject(collection);
await writer.WriteAsync(json);
}
反序列化:
var folder = ApplicationData.Current.RoamingFolder;
var file = await folder.GetFileAsync("collection.json");
using (var stream = await file.OpenStreamForReadAsync())
using (var reader = new StreamReader(stream, Encoding.UTF8))
{
string json = await reader.ReadToEndAsync();
var collection = JsonConvert.DeserializeObject<ObservableCollection<YourClass>>(json);
}
(使用JSON.NET)