“参数不正确。”在WP7中导航到新页面时

时间:2011-01-21 23:00:30

标签: c# windows-phone-7

在导航到我的WP7应用程序中的页面时,我会得到以下例外情况:

我无法准确确定它可能是什么。我已经实现了很多用户控件,但是我将页面传递给每个控件,因此他们可以使用相同的Navigate调用。我也尝试过做

(App.Current.RootVisual as PhoneApplicationFrame).Navigate

但这也经常给出相同的结果。

如果处理了异常,页面会在视觉上切换到下一页,但页面仍保留在上一页上。

例如,如果我有页面布局A - > B - > C,我得到这个导航到C的异常,C会出现,但我仍然会在B上。

如果按下后退,我将返回A.

如果我以某种方式与D进行互动,我将以空白屏幕结束。

有没有人经历过这个?我还没有看到与此相关的WP7导航相关问题。

参数不正确。

堆栈追踪:

  at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
   at MS.Internal.XcpImports.SetValue(INativeCoreTypeWrapper obj, DependencyProperty property, DependencyObject doh)
   at MS.Internal.XcpImports.SetValue(INativeCoreTypeWrapper doh, DependencyProperty property, Object obj)
   at System.Windows.DependencyObject.SetObjectValueToCore(DependencyProperty dp, Object value)
   at System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value, Boolean allowReadOnlySet, Boolean isSetByStyle, Boolean isSetByBuiltInStyle, PropertyInvalidationReason reason)
   at System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value)
   at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
   at System.Windows.Controls.ContentControl.set_Content(Object value)
   at System.Windows.Navigation.NavigationService.CompleteNavigation(DependencyObject content)
   at System.Windows.Navigation.NavigationService.<>c__DisplayClass5.<NavigateCore_ContinueNavigation>b__4()
   at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark)
   at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, StackCrawlMark& stackMark)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at System.Delegate.DynamicInvokeOne(Object[] args)
   at System.MulticastDelegate.DynamicInvokeImpl(Object[] args)
   at System.Delegate.DynamicInvoke(Object[] args)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.Dispatch(DispatcherPriority priority)
   at System.Windows.Threading.Dispatcher.OnInvoke(Object context)
   at System.Windows.Hosting.CallbackCookie.Invoke(Object[] args)
   at System.Windows.Hosting.DelegateWrapper.InternalInvoke(Object[] args)
   at System.Windows.RuntimeHost.ManagedHost.InvokeDelegate(IntPtr pHandle, Int32 nParamCount, ScriptParam[] pParams, ScriptParam& pResult)

编辑:

问题是我的代码试图向前导航,同时还试图向后导航。这导致了一个问题,因为在某些情况下,当在未来页面的OnNavigatedTo中时,我的代码会尝试返回,只是尝试再次前进。这引起了一个大问题。

3 个答案:

答案 0 :(得分:0)

我已经看到在尝试将控件附加到基于现有控件的可视树时发生错误,但伪造给它一个唯一的名称。可能值得检查您的代码,看看是否会发生这种情况。

除此之外,它似乎是一个捕获与控制实例化相关的所有异常。它可能有助于在页面构建过程中查找可能出现的其他问题。

如果异常可能更具体,那就太好了。

答案 1 :(得分:0)

查看NavigationService的代码后,似乎将目标网页分配给Content的{​​{1}}属性时出现问题。也许是因为你传递PhoneApplicationFrame个实例的方式,他们没有被正确地从框架中删除或者其他类似的问题。

我的建议是停止传递Page个实例,特别是因为您只需要访问Page。您可以:只需传递NavigationService,或使用NavigationService

答案 2 :(得分:0)

为什么不复制项目并尝试通过删除所有不能重现问题的内容来缩小问题范围。这可能是一个非常简单的问题,但你必须把这个问题搞得一团糟。