我有一个类,其中包含一些我需要保存到IsolatedStorage以及填充到ListBox中的项目。该课程如下所示
public class History
{
public string Network {get; set;}
public DateTime Date {get; set;}
}
我将使用它来填充具有网络和日期组合的项目列表框(网络是发生按钮单击事件时检测到的网络连接类型)。我只是想在ListBox中显示项目的历史记录,显示检测到的网络连接类型和检测到网络的日期。此数据仅在点击事件中确定。我的主要问题是,如何将此数据保存到IsolatedStorage,然后将每个出现填充到ListBox以显示检测到的网络连接及其各自日期的历史记录?
答案 0 :(得分:0)
你可以从nuget的SharpSerializer做到这一点。
这是我怎么做的
public static class IsolatedStorageOperations
{
public static async Task Save<T>(this T obj, string file)
{
await Task.Run(() =>
{
IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();
IsolatedStorageFileStream stream = null;
try
{
stream = storage.CreateFile(file);
var serializer = new SharpSerializer();
serializer.Serialize(obj,stream);
}
catch (Exception)
{
}
finally
{
if (stream != null)
{
stream.Close();
stream.Dispose();
}
}
});
}
public static async Task<T> Load<T>(string file)
{
IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication();
T obj = Activator.CreateInstance<T>();
if (storage.FileExists(file))
{
IsolatedStorageFileStream stream = null;
try
{
stream = storage.OpenFile(file, FileMode.Open);
var serializer = new SharpSerializer();
obj = (T)serializer.Deserialize(stream);
}
catch
{
}
finally
{
if (stream != null)
{
stream.Close();
stream.Dispose();
}
}
return obj;
}
await obj.Save(file);
return obj;
}
}
这里obj是List实例,其中object是类History的实例。此List将是ListBox的项目源