2011-01-21 74 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