如何将项目保存到IsolatedStorage并填充ListBox

时间:2014-04-08 20:46:09

标签: c# windows-phone-8 listbox isolatedstorage

我有一个类,其中包含一些我需要保存到IsolatedStorage以及填充到ListBox中的项目。该课程如下所示

public class History
{
    public string Network {get; set;} 

    public DateTime Date {get; set;} 
}

我将使用它来填充具有网络和日期组合的项目列表框(网络是发生按钮单击事件时检测到的网络连接类型)。我只是想在ListBox中显示项目的历史记录,显示检测到的网络连接类型和检测到网络的日期。此数据仅在点击事件中确定。我的主要问题是,如何将此数据保存到IsolatedStorage,然后将每个出现填充到ListBox以显示检测到的网络连接及其各自日期的历史记录?

1 个答案:

答案 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的项目源