2011-01-21 85 views
3

常常在我的WP7应用程序导航到网页时,浏览到新的页面,我得到下面的异常:“参数不正确。”当WP7

我一直没能拖住这可能是什么。我已经实现了很多用户控件,但是我将页面传递给每个控件,以便它们可以使用相同的Navigate调用。我也试过

(App.Current.RootVisual as PhoneApplicationFrame).Navigate 

但是,经常也会得到相同的结果。

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

举例来说,如果我有页面布局A - >乙 - > 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中时,我的代码会尝试返回,只是尝试再次前进。这造成了一个大问题。

+0

无论如何,你可以发布多一点你的代码,你如何导航,从哪里,到哪里,用什么? – 2011-01-25 02:50:33

+0

愿意帮助这里,只是没有足够的信息来帮助你。 – 2011-01-30 21:56:59

回答

0

为什么不复制项目并尝试通过删除所有不会重现问题的东西来缩小问题的范围。这可能是一个非常简单的问题,但你必须解决这个问题。

0

我已经看到,当试图将控件附加到基于现有控件的可视化树上,但是试图给它一个唯一的名称时发生错误。检查你的代码可能是值得的,看看是否可能发生。

简而言之,它似乎是一个捕获与控件实例化有关的所有异常。这可能有助于在页面构建期间寻找其他可能出现的问题。

如果异常可能更具体,那将会很好。

+0

感谢您的回复。为了确保我完全理解你,你的意思是不命名每个元素(例如,留下一个没有名称的文本块),或者让一个堆栈具有相同名称的元素,如 – 2011-01-21 23:13:52

0

查看了NavigationService的代码后,似乎将目标页面指定为PhoneApplicationFrameContent属性时出现问题。也许是因为你通过Page实例的方式,他们没有被正确地从框架或其他类似的问题中删除。

我的建议是停止传递Page实例,尤其是因为您只需要访问NavigationService。您可以:或者通过NavigationService,或者使用PhoneApplicationFrame.Navigate