应用显示了在应用程序的不同页面

问题描述:

我在app.When约3-4个不同的网页我的应用程序的主页显示并按下开始键,设备appears.Now时的主屏幕上开始按钮不同的行为后退键被按下,它带回我的应用程序的主页,这是预期的行为。但如果我进入我的应用程序并打开第二或第三页,然后执行相同的开始和返回按钮操作,那么我的应用程序不是从它离开的页面恢复。而是,在我的应用程序打开之前打开的应用程序。 我该如何纠正这种行为?应用显示了在应用程序的不同页面

+0

你能告诉你的导航事件处理程序的第二页(如果您有任何)和PhoneApplicationService激活/停用事件处理程序? – 2011-03-10 11:12:03

+0

未使用电话激活/禁用的事件处理程序,并且导航事件处理程序正在执行特定于该页面的操作。与base.OnNavigatedTo()和base.OnNaviageetdFrom() – Shaireen 2011-03-10 11:17:13

+1

我的猜测是,你可以有里面我提到的方法之一引发未处理的异常。如果你没有使用激活的事件来恢复状态,那么你的应用程序重启后可能会试图使用一些被破坏的对象,从而导致异常? – 2011-03-10 11:28:29

正如Loki Kriasus指出,这种类型的行为肯定听起来像你正在尝试使用恢复您的应用程序时,尚未初始化的对象。查尔斯Petzold的免费电子书Programming Windows 7对这个首发117

页上的你在做什么很大的部分,我会猜手机状态将绰绰有余。电话状态与ASP.NET中的会话状态类似。它只是一个带有字符串键的(可序列化的)对象的字典,并不会在您的应用程序启动时保留,但当您的应用程序从Back Stack导航到时,它会被恢复。

下面是一个例子的它的使用恢复一些名为myObject的自定义对象:

private CustomObject myObject; 

protected override void OnNavigatedFrom(NavigationEventArgs args) 
{ 
    //Save to State when leaving the page 
    PhoneApplicationService.Current.State["myObject"] = myObject; 
    base.OnNavigatedFrom(args); 
} 

protected override void OnNavigatedTo(NavigationEventArgs args) 
{ 
    if (PhoneApplicationService.Current.State.ContainsKey("myObject")) 
    { 
     //Restore from State 
     myObject = (CustomObject)PhoneApplicationService.Current.State["myObject"]; 
    } 
    else 
    { 
     //No previous object, so perform initialization 
     myObject = new myObject(); 
    } 
} 

如果你需要存储的设置在您的应用程序的所有实例,然后看看IsolatedStorageSettings这是为这个完美的。还有其他选择取决于您的需求(请查看上面的链接书中的示例)。我猜想在第二页和第三页中使用如上所示的页面状态可以解决您的问题。

+0

感谢名单了很多@ theChrisKent..It真的帮助我理解我要保存完整page.Is它的可能的状态做到这一点functionality.But? – Shaireen 2011-03-11 04:31:34