2016-05-12 5 views
3

私はPrism Formsフレームワークの逆参照機能をテストしています。私は現在、マスターとしてメニューを持つMasterDetailPageを持っている状況があります。メニュー項目をクリックすると、詳細が、きれいなNavigationPageをコンテナとして持つ特定のページに変わります。PrismフォームでのMasterDetailとNavigationPageの逆リンク

プリズムフォームのSandbox exampleを確認すると、MasterDetailナビゲーションの例が表示されますが、ナビゲーションページは表示されません。 /MasterDetailPage/NavigationPage/MySecondPage

:/ MasterDetailPage/NavigationPage/MyFirstPage

その後

は、私は2番目のメニュー項目が新鮮NavigationPageにリンクする:

は、だから私は、起動時にこの(絶対)ディープリンク構造を持っています

私の現在の回避策は、絶対的な逆中継を行うことですが、より良い方法があるかどうか疑問に思っていましたか? Prism PageNavigationServiceは、セグメントタイプが現在の詳細タイプと同じかどうかを確認します。しかし、これらはどちらもNavigationPagesなので、既存のNavigationPageに新しいページを追加しようとします。その瞬間には、少なくともiOS上ではメニューアイコンも消去されます。

答えて

2

実際には、サンドボックスのアプリがMasterDetailでNavigationPagesを使用して行います。https://github.com/PrismLibrary/Prism/blob/master/Sandbox/Xamarin/HelloWorld/HelloWorld/HelloWorld/Views/MyMasterDetail.xaml

プリズムは、パフォーマンス上の理由から詳細ページを再利用していますが、それがないと思うようにそれが動作しません。新しいページをNavigationPageのNavigationStackに追加する一方で、スタックから前のページも削除します。これにより、NavigationStackは適切な状態に保たれます。

表示されるアイコンの動作は、Xamarin.Formsで確認されたバグのためです。 https://bugzilla.xamarin.com/show_bug.cgi?id=41038

Xamarinがこのバグを修正するとすぐに、修正をNugetに公開します。その間に、これを回避する唯一の方法は、プリズムコードベースをフォークし、ページタイプチェックを削除することです。

+0

私は正しい軌道に乗っていました.Prismコードベースを既にフォークして、PageNavigationServiceの内部動作を調べました。 Xamarin.Formsでそのバグについて知りませんでした。ご協力いただきありがとうございます。 –

関連する問題