Save/Get ObservableCollection to/from 漫游
Save/Get ObservableCollection to/from Roaming
我正在制作一个通用 windows 商店应用程序并且我有一个 ObservableCollection。
我想要的是 save
来自某处 ObservableCollection 的数据,以便数据可以在桌面和具有相同通用应用程序的 phone 之间同步,然后我需要能够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 项目和属性是不切实际的。
最简单的方法是写在app data roaming文件夹下的一个文件中;应用设置存储起来不是很方便 collections。您可以使用 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)
我正在制作一个通用 windows 商店应用程序并且我有一个 ObservableCollection。
我想要的是 save
来自某处 ObservableCollection 的数据,以便数据可以在桌面和具有相同通用应用程序的 phone 之间同步,然后我需要能够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 项目和属性是不切实际的。
最简单的方法是写在app data roaming文件夹下的一个文件中;应用设置存储起来不是很方便 collections。您可以使用 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)