如何将项保存到隔离存储并填充列表框
本文关键字:存储 填充 列表 隔离 保存 | 更新日期: 2023-09-27 17:57:23
我有一个类,其中包含一些我需要保存到隔离存储以及填充到ListBox中的项目。类如下所示
public class History
{
public string Network {get; set;}
public DateTime Date {get; set;}
}
我将使用它来填充具有网络和日期组合的项目列表框(网络是发生按钮单击事件时检测到的网络连接类型)。我只想在 ListBox 中显示项目的历史记录,该列表框显示检测到的网络连接类型和检测到网络的日期。此数据将仅在点击事件中确定。我的主要问题是,如何将此数据保存到隔离存储,然后将每个事件填充到 ListBox 以显示检测到的网络连接的历史记录及其各自的日期?
你可以从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 是列表实例,其中对象是类历史记录的实例。此列表将是列表框的项源