首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Metro覆盖SaveState行为

Metro覆盖SaveState行为
EN

Stack Overflow用户
提问于 2013-06-04 19:54:38
回答 2查看 265关注 0票数 0

如何将Metro中的SuspensionManager对象修改为仅针对MainPageSaveState,并对任何子页面丢弃State导航

例如,我有一个MainPage,允许您导航到ChildPage。如果Metro是ClosedSuspended,我希望ChildPage覆盖MainPage状态值。

现在,下次用户打开应用程序时,MainPage应该打开,而不是ChildPage。另外,MainPage应该显示在应用程序之前更新的ChildPageClosedSuspended

对于如何安全地修改SuspensionManager对象以实现这一点,有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-08 11:03:47

使用Danielovich的建议(尚未完成),解决方案分为两部分:

第一:

  • 不再在pageState对象中保存状态,而是使用SessionState对象保存状态。为什么?这样所有的Pages都可以共享相同的State信息。

其次:

  • 为了确保不保存NavigationState,使MainPage始终是默认页面,我们需要按以下方式更改SuspensionManager中的SaveFrameNavigationState: 私有静态空SaveFrameNavigationState(帧帧){ var frameState =SessionStateForFrame(框架);frame.GetNavigationState();frameState“导航”= "1,1,0,15,Skycap.MainPage,12,0";}
票数 0
EN

Stack Overflow用户

发布于 2013-06-04 22:00:35

为什么不直接将ChildPage中的数据添加到SessionState字典中,并在应用程序恢复时将其填充到MainPage中?

您甚至不需要修改SuspensionManager就可以做到这一点!

代码语言:javascript
复制
public BasicPage1() {
    this.InitializeComponent();

    Application.Current.Suspending += Current_Suspending;
    Application.Current.Resuming += Current_Resuming;
}

void Current_Resuming( object sender, object e ) {
    var name = SuspensionManager.SessionState["name"].ToString();
}

void Current_Suspending( object sender, Windows.ApplicationModel.SuspendingEventArgs e ) {
    SuspensionManager.SessionState.Add( "name", "danielovich" );
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16926356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档