Windows phone 7 System.Windows.Navigation.NavigationService.Navigate正在引发invalidoperationexception
我正在使用以下代码来推送新页面Windows phone 7 System.Windows.Navigation.NavigationService.Navigate正在引发invalidoperationexception,windows-phone-7,Windows Phone 7,我正在使用以下代码来推送新页面 Frame Image Function Offset 0 coredll.dll xxx_RaiseException 19 1 mscoree3_7.dll
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
下面的行似乎正在抛出invalidoperationexception
Uri navigateUritemp = new Uri(url, UriKind.RelativeOrAbsolute);
if(scrObj.NavigationService.CurrentSource != navigateUritemp)
{
scrObj.NavigationService.Navigate(navigateUritemp);
}
有人能说出这段代码的错误吗?尝试使用
如果(scrObj.NavigationService.CurrentSource.equals(navigateUritemp))
也许这会有所帮助。您是否总是遇到此异常?请尝试执行以下操作:
试试这个:
NavigationService.Navigate(新Uri(“/homescreen/Page1.xaml”,UriKind.Relative));
或
NavigationService.Navigate(新Uri(“/homescreen/Page2.xaml”,UriKind.Relative))
如果您使用的是UriKind.Relative,请确保指定正确的路径,例如:如果您使用“homescreen/Page2.xaml”,则必须使用“/homescreen/Page2.xaml”,路径开头的“/”类似于“root”或“~”在ASP.NET中我看到的一种常见情况是,如果同时尝试了多个导航,或者当应用程序不在前台时尝试了导航,则会发生无效操作异常 例如,如果用户在缓慢导航时第二次点击appbar按钮,就会发生这种情况
快速搜索会发现其他人也看到过类似的东西-例如,从app hub获得堆栈跟踪,上面写着scrObj.NavigationService.Navigate(navigateUritemp);正在抛出invalidoperationexception。我试图找到引发此异常的流。navigateUritemp是包含正确字符串的URI,例如:homescreen/homescreen.xaml我甚至没有一次遇到过这种异常。我从AppHub获得了上面发布的堆栈跟踪。它看起来像scrObj.NavigationService.Navigate(navigationEurItemp);当navigateUritemp为null时将引发异常。但在代码中,它在任何时候都不会为空:(尝试调试它。在此操作之前放置一个断点,并检查是否一切正常。我指的是所有分配。我只有两种情况,即我正在发送有效字符串。“/XXX/login/MultipleDomain.xaml”和“/XXX/homescreen/homescreen.xaml?membername=“+membername+”&memberid=”+memberid。这里membername和memberid是字符串。即使我为这个参数发送null,我也不会得到异常。我将有效字符串作为Uri的参数发送。如果字符串将无效,那么我应该得到异常。我甚至一次也没有得到异常。但某些用户的异常似乎已经得到了。Uri有可能变成inv吗在某一点上是否有效?我硬编码为“NavigationService.Navigate(null,UriKind.Relative)),这里我得到了与我在上面发布的完全相同的堆栈跟踪确定尝试硬编码为“NavigationService.Navigate(“/folder/page.xaml”,UriKind.Relative))”看看导航服务是否工作正常这意味着你的代码很好,你必须在代码的另一个地方查找。据我所知,目标页面为空或不存在。您正在使用MVVM体系结构模式吗?
scrObj.NavigationService.Navigate(navigateUritemp);