2016-05-12 11 views
3

Ich teste die Deeplinking-Funktion des Prism Forms-Frameworks. Ich habe derzeit eine Situation, in der ich eine MasterDetailPage mit einem Menü als Master habe. Wenn ich auf die Menüelemente klicke, sollten die Details auf bestimmte Seiten mit einer sauberen Navigationsseite als Container geändert werden.MasterDetail und NavigationPage Deeplinking in Prism Forms

Wenn ich die für Prism Forms überprüfe, wird ein Beispiel für die MasterDetail-Navigation angezeigt, aber keine Navigationsseiten.

So habe ich diese (absolut) Deeplink Struktur beim Start:/MasterDetailPage/NavigationPage/MyFirstPage

Dann möchte ich die zweite Menüpunkt zu einem frischen NavigationPage verknüpfen: /MasterDetailPage/NavigationPage/MySecondPage

Mein aktueller Workaround ist absolute Deeplinking, aber ich frage mich, ob es einen besseren Weg gibt? Der Prism PageNavigationService prüft, ob der Segmenttyp mit dem aktuellen Detailtyp übereinstimmt. Da es sich jedoch um NavigationPages handelt, wird versucht, die neue Seite in die bereits vorhandene NavigationPage einzufügen. In diesem Moment wird auch das Menü-Icon (zumindest auf iOS) beendet.

Antwort

2

Eigentlich funktioniert die Sandbox app Verwendung NavigationPages im Masterdetail: https://github.com/PrismLibrary/Prism/blob/master/Sandbox/Xamarin/HelloWorld/HelloWorld/HelloWorld/Views/MyMasterDetail.xaml

Prism wieder verwendet die Detailseite aus Performance-Gründen, aber es funktioniert nicht, wie Sie denken, es tut. Während die neue Seite dem NavigationStack der NavigationPage hinzugefügt wird, wird auch die vorherige Seite aus dem Stapel entfernt. Dies hält den NavigationStack im richtigen Zustand.

Das Symbol Verhalten, das Sie sehen, ist wegen eines bestätigten Fehlers in Xamarin.Forms. Sie können das Problem hier verfolgen: https://bugzilla.xamarin.com/show_bug.cgi?id=41038

Sobald Xamarin diesen Fehler behebt, werde ich den Fix zu Nuget veröffentlichen. In der Zwischenzeit besteht die einzige Möglichkeit, dies zu umgehen, darin, die Prism-Codebasis zu zerlegen und die Überprüfung des Seitentyps zu entfernen.

+0

Aha, ich war auf dem richtigen Weg, dann habe ich schon die Prism-Codebasis gegabelt, um etwas über das interne Verhalten des PageNavigationService zu erfahren. Habe diesen Fehler in Xamarin.Forms allerdings nicht gewusst. Danke für Ihre Hilfe. –