如何在wp7手机应用程序页面中保存CustomObject状态

时间:2012-10-03 05:37:37

标签: c# windows-phone-7

我有一个自定义类,我想在停用应用程序时保存对象,正常类型如String,int,能够保存状态并使用Phone Application Page状态恢复它。我想,我应该将myclass设为serializable,这样我在保存对象(MyCustomObject)和恢复Object的状态时将无法面对这个问题。

我尝试使用System.xml.serialization,我尝试使用JesseLiberty博客中建议的[DataContract],再次当我尝试使用它时,我得到的问题我的网络框架工作是2.0,为此它需要3.0,我不知道是否合适。

任何人都可以在这个问题上提供帮助。

2 个答案:

答案 0 :(得分:0)

我正在使用这个Helper方法,我可以在IsolatedStorage中保存不同类型的数据(自定义对象),并且可以轻松地检索它们。

//Helper method to save a key value pair in ISO store
    internal static void SaveKeyValue<T>(string key, T value)
    {
        if (IsolatedStorageSettings.ApplicationSettings.Contains(key))
            IsolatedStorageSettings.ApplicationSettings[key] = value;
        else
            IsolatedStorageSettings.ApplicationSettings.Add(key, value);
        IsolatedStorageSettings.ApplicationSettings.Save();
    }

//Helper method to load a value of type T associated with the key from ISO store
    internal static T LoadKeyValue<T>(string key)
    {
        if (IsolatedStorageSettings.ApplicationSettings.Contains(key))
            return (T)IsolatedStorageSettings.ApplicationSettings[key];
        else
            return default(T);
    }

以下是这些辅助方法的示例用法。

//Save your custom objects whenever you want
SaveKeyValue<MyCustomClass>("customObjectKey", customObject);

//Load your custom objects after the re activation of app..or whenever you need
MyCustomClass customObject = LoadKeyValue<MyCustomClass>("customObjectKey");

答案 1 :(得分:0)

PageState对象只是一个dictionary<string, object>,它被序列化为XML。

如果要在其中存储对象,则需要能够序列化和反序列化它们。