Windows phone 7 停用后的应用程序响应:错误5.2.3

Windows phone 7 停用后的应用程序响应:错误5.2.3,windows-phone-7,Windows Phone 7,我最近提交了一个在Silverlight框架上工作的小应用程序。 但由于错误5.2.3,我的应用程序在被停用后被市场拒绝。 我发现: 用户成功完成游戏(谜题)后,我将向他显示一个对话框: MessageBoxResult mr = MessageBox.Show("You have won! Do you want to start another game?", "Information", MessageBoxButton.OKCancel); if(mr==MessageBoxResult

我最近提交了一个在Silverlight框架上工作的小应用程序。 但由于错误5.2.3,我的应用程序在被停用后被市场拒绝。 我发现: 用户成功完成游戏(谜题)后,我将向他显示一个对话框:

MessageBoxResult mr = MessageBox.Show("You have won! Do you want to start another game?", "Information", MessageBoxButton.OKCancel);
if(mr==MessageBoxResult.Cancel)
{
    NavigationService.GoBack();
}
现在关键是-如果用户在显示此对话框后按下开始按钮,应用程序将停止抛出异常-
当任务不在前台时,不允许导航。错误:-2147220990


在我看来,这似乎是一个有效的错误,尽管我不确定我的其他应用程序如何成功通过认证过程,尽管它们也有相同的缺陷。我刚刚开始开发WP应用程序,所以我对要做的事情没有太多的知识。请你帮我解决一下

对于这种情况,似乎没有一个简单的测试。在触发
停用
事件之前,
消息框
似乎已取消,因此我无法查看测试此状态的方法

我的建议是检测并接受特定的异常:

  MessageBoxResult mr = MessageBox.Show("You have won! Do you want to start another game?", "Information", MessageBoxButton.OKCancel);
  if (mr == MessageBoxResult.Cancel)
  {
    try
    {
      NavigationService.GoBack();
    }
    catch (InvalidOperationException e)
    {
      // occurs if message box closed due to de-activation
    }
  }

首先检查NavigationService.CanGoBack。@willmel这将不起作用,当取消激活NavigationService.CanGoBack时,它仍将报告为true。@尽管如此,仍应首先检查它。在出现此异常之前,应用程序将被删除。按下“后退”按钮后,我应返回到该状态(即打开对话框)。那么我应该如何处理它呢?使用MVVM模式,在ViewModel中设置一个属性来指示MessageBox已经打开。您可以在此处了解何时保存视图模型状态以处理WP7生命周期事件: