如何将项保存到隔离存储并填充列表框

本文关键字:存储 填充 列表 隔离 保存 | 更新日期: 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 是列表实例,其中对象是类历史记录的实例。此列表将是列表框的项源