System.Windows.Navigation.NavigationService.Navigate抛出invalidoperationexception

时间:2012-05-14 12:23:59

标签: windows-phone-7

Frame    Image             Function                                                Offset    
0        coredll.dll       xxx_RaiseException                                      19        
1        mscoree3_7.dll                                                            436488    
2        mscoree3_7.dll                                                            386545    
3        mscoree3_7.dll                                                            540936    
4                          TransitionStub                                          0         
5                          System.Windows.Navigation.NavigationService.Navigate    1652      
6                          XXX.Components.pushScreen        172       
7                          XXX.pushHomeScr                                 996       
8                          XXX.update                                      1488      
9                          .__c__DisplayClass3._ResponseReady_b__0                 700       
10       mscoree3_7.dll                                                            429164    
11       mscoree3_7.dll                                                            185803    
12       mscoree3_7.dll                                                            184423    
13                         System.Reflection.RuntimeMethodInfo.InternalInvoke      112       
14                         System.Reflection.RuntimeMethodInfo.InternalInvoke      1556      
15                         System.Reflection.MethodBase.Invoke                     104       
16                         System.Delegate.DynamicInvokeOne                        476       
17                         System.MulticastDelegate.DynamicInvokeImpl              84        
18                         System.Windows.Threading.DispatcherOperation.Invoke     80        
19                         System.Windows.Threading.Dispatcher.Dispatch            404

我使用以下代码推送新页面

Uri navigateUritemp = new Uri(url, UriKind.RelativeOrAbsolute);
if(scrObj.NavigationService.CurrentSource != navigateUritemp)
{
scrObj.NavigationService.Navigate(navigateUritemp);
}

看起来以下行正在抛出invalidoperationexception

scrObj.NavigationService.Navigate(navigateUritemp);

有人可以告诉这段代码有什么问题吗?

3 个答案:

答案 0 :(得分:3)

我见过这种InvalidOperationException的一种常见情况是,如果同时尝试多次导航,或者在应用不在前台时发生导航尝试。

例如,如果用户在慢速导航过程中第二次设法点击了一个appbar按钮,就会发生这种情况。

快速搜索显示其他人已经看到了同样的事情 - 例如http://www.nickharris.net/2011/01/windows-phone-7-navigation-is-not-allowed-when-the-task-is-not-in-the-foreground/

答案 1 :(得分:0)

尝试使用if (scrObj.NavigationService.CurrentSource.equals(navigateUritemp))也许这会有所帮助。你是否一直得到这个例外?

答案 2 :(得分:0)

尝试执行以下操作:

  1. 创建一个新项目并删除其余代码并保持与NavigationService相关的代码。
  2. 创建文件夹(将文件夹命名为主屏幕)
  3. 添加2个XAML页面(例如:Page1.xaml,Page2.xaml)
  4. 从MainPage.xaml测试NavigationService代码

    试试这个:

    NavigationService.Navigate(new Uri(“/ homescreen / Page1.xaml”,UriKind.Relative));

    NavigationService.Navigate(new Uri(“/ homescreen / Page2.xaml”,UriKind.Relative));


  5. 如果您正在使用UriKind。相关请确保指定正确的路径,例如:如果您使用“homescreen / Page2.xaml”它想要工作,您必须在开头使用“/homescreen/Page2.xaml”,“/”您的路径就像ASP.NET中的“root”或“〜”