应用程序运行时如何在所有时间内保持页面状态? (WP8)

时间:2014-06-11 10:36:49

标签: c# windows-phone-8

例如,我的应用中有3个页面。它有以下导航地图:

MainPage>> InfoPage>> SettingsPage。

因此,如果我从InfoPage转到SettingsPage然后使用Back按钮,InfoPage将保持其状态。

但是如果我使用Back按钮从InfoPage转到MainPage并再次转到InfoPage,InfoPage将失去其状态,并再次开始加载。

在应用运行时,如何在所有时间内保持InfoPage状态?我只需要初始化一次。

1 个答案:

答案 0 :(得分:2)

处理此问题的最佳方法是为该页面创建缓存。然后在加载时从隔离存储中检索缓存。

你的流程看起来像这样

> >>OnNavigatedToMethod_AnyPage
> -->Check if cache exists in isolated storage
> --->If it does get the cache and load the values into the page
> ---> if it doesnt exist create a new one and save default values
> 
> >>OnNavigatedFromMethod_AnyPage
> -->Load values into cache object
> --->Save cache object to isolated storage

那我们该怎么做呢?

首先,download the isolated storage dll I wrote called EZ_Iso

下一步是实施它。

首先创建页面缓存对象

[DataContractAttribute]//This tells the EZ_Iso dll that this object is serializable 
public PageOneCache{

    [DataMember] //This tells the serializer to serialize this member
    public bool flag1 {get; set;}

    [DataMember]
    public List<int> ages {get;set;}

    public int boxes {get; set;} // This member doesn't have the [DataMember] so it wont get saved
}

现在我们有缓存对象可以保存它

PageOneCache pageOneCache = new PageOneCache(){ flag1 = true, ages = new List<int>(){1,3,4}, boxes = 2};

if(EZ_iso.IsolatedStorageAccess.FileExists("pageOneCache")
   Ez_iso.IsolatedStorageAccess.OverwriteFile("pageOneCache",pageOneCache);
else
   Ez_iso.IsolatedStorageAccess.SaveFile("pageOneCache",pageOneCache);

完成后,您的缓存将保存到手机的独立存储中。无论应用程序是否正在运行,它都是安全的。手机可以完全关闭,一切都会好的。

现在检索

PageOneCache pageOneCache = (PageOneCache)EZ_iso.IsolatedStorageAccess.GetFile("pageOneCache",typeof(PageOneCache));

那就是它!