设为首页 收藏本站
查看: 977|回复: 0

Win8 导航及数据状态保持

[复制链接]

尚未签到

发表于 2015-5-21 05:03:30 | 显示全部楼层 |阅读模式
  当Win8程序挂起时,就需要对状态进行保持,当激活进入程序后给用户一种程序始终在运行的良好体验~~
  导航状态保持
  当程序进入挂起状态或暂停时就需要保存当前访问的页面,使程序激活时返回之前的页面。导航状态很简单,在App.xaml.cs中修改,共三个步骤:
1. 在中找到OnLaunched方法,进行注册:



MyApp.Common.SuspensionManager.RegisterFrame(rootFrame, "appFrame");
  2. 在程序进入暂停时会触发OnSuspending方法,在它内部进行保存,采用内部编程,需要在方法声明添加async异步编程关键字:



        private async void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
//TODO: Save application state and stop any background activity
await MyApp.Common.SuspensionManager.SaveAsync();
deferral.Complete();
}
  3. 在重新激活时,加载导航状态,需要先判断应用程序之前的状态是否是挂起后进入OnLaunched的,在OnLaunched添加代码:



if (args.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
//TODO: Load state from previously suspended application
await HelloWorld.Common.SuspensionManager.RestoreAsync();
}
  
  数据状态保持
  应用程序的数据分为用户数据、会话数据。凡是用户可以直接操作,修改的数据都是用户数据,例如输入框的内容。而会话数据则是通过交互产生的数据。如点击按钮,计算后得到的结果。
有时候我们希望用户数据可以永久保存、供多页面访问,可以使用ApplicationDataContainer对象进行保存在应用数据容器中。只在当前页面用的数据,可以保持在pageState 中。
在BasePage模版的后台代码,提供了LoadState和SaveState方法,可以在它们里面进行数据的恢复与保存。



//State保存:
pageState["msg"] = "Message";   
//or
Windows.Storage.ApplicationDataContainer appDataContainer = Windows.Storage.ApplicationData.Current.LocalSetting;
appDataContainer.Values["msg"] = "Message";
//State恢复:
if(pageState != null && pageState.ContainsKey("msg"))
{
txtMsg.Text = pageState["msg"].ToString();
}
//or
Windows.Storage.ApplicationDataContainer appDataContainer = Windows.Storage.ApplicationData.Current.LocalSetting;
if(appDataContainer.Values.ContainsKey("msg"))
{
tbInput.Text = appDataContainer.Values["msg"].ToString();
}
  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-68932-1-1.html 上篇帖子: 解决 Win8 Pl2302 下不能识别的问题 下篇帖子: win8 提示安装 .net framework 3.5解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表