2011-12-07 38 views
0

我有一个WP 7.5应用程序。我有一个启动画面,然后是我的MainPage.xaml,它有一个版权声明和开始按钮。用户点击按钮,它会转到我们的主屏幕(Home.xaml),用户可以在该屏幕上开始与应用程序的核心交互。跳过MainPage并转到应用程序启动时的第二个屏幕

我要的是:

1:版权屏幕即MainPage.xaml中应该只出现在第一次用户在安装后启动应用程序。随后从应用程序菜单或磁贴启动后,我不想显示版权页面。

2:同样的事情,一旦用户单击开始/接受按钮并转到Home.xaml,他或她不能通过单击后退按钮返回到MainPage.xaml,而是从主屏幕单击返回,他们应该退出应用程序。

我做了什么至今:

1:MainPage.xaml中的OnNavigateTo我检查的ApplicationSetting键,showCopyright。如果找不到或者不真实,我什么都不做。如果它是假的,那么我使用NavigationService.Navigate到我的Home.xaml。

2:在开始/接受按钮时,我将ApplicationSettings键设置为false。

问题与上面的方法:

1:如果我使用后退按钮从主屏幕,我进入无限循环。该应用程序应该退出,但它不会。

问题:

1:上述方法是对还是有更好的方法? 2:如果我在正确的方向,当我在Home.xaml上时,如何使我的应用程序退出后退按钮?

谢谢,任何指针?

编辑:对于sake--我发现了大约从Windows Phone应用程序明确的退出一个很好的解释here记录。从WP7.1/7.5开始,没有明确退出Silverlight WP应用程序的内置方式。

+1

可能重复http://stackoverflow.com/questions/6875875/exit-application-on-back-button-on-wp7 –

+1

@Xin:谢谢,这是大致相同的情况下。这些建议很有帮助。 – oms

回答

3

您可以在后退按键上移除新页面(Home.xaml)中的导航服务的Backentry,从而使中断成为无限循环。

请添加以下代码Home.xaml.cs并尝试

//this works only in 7.1 SDK 
protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e) 
     { 
      try 
      { 
       if (NavigationService.CanGoBack) 
        NavigationService.RemoveBackEntry(); 
       base.OnBackKeyPress(e); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Exception = " + ex.Message); 
      } 
     } 
+0

@oms,请使用上述相同的解决方案,但添加删除NavigationService Back代码并尝试的代码。 – Santhu

+0

谢谢Santhosh。这似乎正在解决问题,但有什么副作用,我需要担心,当使用它? – oms

+0

NavigationService.RemoveBackEntry();在某些情况下可能会抛出异常,您必须处理它。 – Santhu

0

看一看这篇文章,它表明你如何添加EULA /免责声明页面,有你正在寻找的功能为:

http://bjorn.kuiper.nu/2011/09/09/wp7eula/

+0

谢谢,我也有类似的逻辑,但后来我打算去弹出所以我不必清除后台。 – oms

+0

听起来像一个有趣的方法,但我想弹出不会给你很大的空间来显示EULA。 – invalidusername

+0

看来我几乎可以在弹出窗口中显示任何东西,并且可以使其覆盖整个屏幕。我还没有尝试过。 – oms

相关问题