2011-01-21 12 views
3

私のWP7アプリケーションのページに移動するときは、しばしば以下の例外が発生します。"パラメータが正しくありません。" 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で、私のコードが元に戻ろうと試みるだけで、再び前進しようとするからです。これは大きな問題を引き起こしました。

+0

とにかく、どこからどのようにナビゲートするかについて、もう少しコードを投稿することができます。 –

+0

ここでお手伝いしたいと思っています。 –

答えて

0

プロジェクトをコピーして、問題を再現しないすべてのものを削除して問題を絞り込んでください。それは非常に単純な問題かもしれませんが、あなたは問題を乱雑にしなければなりません。

0

私は、既存のコントロールに基づいたビジュアルツリーにコントロールを添付しようとしたときにエラーが発生するのを見たことがありますが、一意の名前を付けることは忘れてしまいます。これが起こる可能性があるかどうかを確認するには、コードをチェックする価値があります。

これは、コントロールのインスタンス化に関するすべての例外をキャッチしているようです。これらの行に沿ったページ構築中に他に何が起こる可能性があるか調べるのに役立ちます。

例外がより具体的な場合は、いいですね。

+0

お返事ありがとうございます。私があなたを完全に理解しているかどうかを確認するために、各要素に名前を付けること(例えば、名前のないテキストブロックを残す)、または同じ名前を持つ要素を持つスタックを持つことを意味しますか? –

+0

、および(ページB)を参照してください。 –

+0

したがって、同じページ(ビジュアルツリー)上の同じ名前を持つコントロールは、前回私にエラーを発生させたものです。 –

0

NavigationServiceのコードを見て、のContentプロパティに宛先ページを割り当てるのに問題があるように見えます。おそらくあなたの周りにPageのインスタンスを渡している方法のために、彼らはフレームや他の同様の問題から適切に削除されていません。

特に、NavigationServiceにアクセスする必要がある場合は、Pageのインスタンスを渡すのをやめてください。代わりにNavigationServiceを渡すか、PhoneApplicationFrame.Navigate

+0

ありがとうございますが、問題はページへの参照を渡す前に発生しました。私は可能な解決策を試みていました。 –

+0

OK。あなたが達成しようとしていることを説明し、現時点でどうしているのかを示すことができますか? –

関連する問題