例如,我的应用中有3个页面。它有以下导航地图:
MainPage>> InfoPage>> SettingsPage。
因此,如果我从InfoPage转到SettingsPage然后使用Back按钮,InfoPage将保持其状态。
但是如果我使用Back按钮从InfoPage转到MainPage并再次转到InfoPage,InfoPage将失去其状态,并再次开始加载。
在应用运行时,如何在所有时间内保持InfoPage状态?我只需要初始化一次。
答案 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));
那就是它!