2016-05-12 3 views
3

Я тестирую функцию deeplinking рамки Prism Forms. В настоящее время у меня есть ситуация, когда у меня есть MasterDetailPage с меню в качестве Master. Когда я нажимаю элементы меню, детали должны меняться на определенные страницы с помощью чистого NavigationPage в качестве контейнера.MasterDetail и NavigationPage deeplinking в формах Призмы

Когда я проверяю Sandbox example для форм призмы, он показывает пример для навигации по MasterDetail, но не включает страницы навигации.

Так что у меня это (абсолютная) Deeplink структуры при запуске:/MasterDetailPage/NavigationPage/MyFirstPage

Тогда я хочу второй пункт меню, ссылки на свежие NavigationPage: /MasterDetailPage/NavigationPage/MySecondPage

Мое текущее обходное решение - сделать абсолютное деблок, но мне было интересно, есть ли лучший способ? Prism PageNavigationService проверяет, совпадает ли тип сегмента с текущим типом данных. Но поскольку они являются как NavigationPages, он пытается добавить новую страницу в уже существующую NavigationPage. В этот момент он также убивает значок меню (по крайней мере, на iOS).

ответ

2

На самом деле, приложение Песочница делает использование NavigationPages в MasterDetail: https://github.com/PrismLibrary/Prism/blob/master/Sandbox/Xamarin/HelloWorld/HelloWorld/HelloWorld/Views/MyMasterDetail.xaml

Prism повторно детализированную страницу соображений производительности, но это не работает, как вы думаете, что он делает. Хотя он добавляет новую страницу в NavigationStack NavigationPage, она также удаляет предыдущую страницу из стека. Это держит NavigationStack в правильном состоянии.

Поведение значков, которое вы видите, связано с подтвержденной ошибкой в ​​Xamarin.Forms. Вы можете оставить эту проблему здесь: https://bugzilla.xamarin.com/show_bug.cgi?id=41038

Как только Xamarin исправляет эту ошибку, я опубликую исправление в Nuget. В то же время единственный способ обойти это - разбить базу кода Prism и удалить проверку типа страницы.

+0

Ага, тогда я был на правильном пути, я уже искал кодовую базу Prism, чтобы узнать о внутреннем поведении PageNavigationService. Не знал об этой ошибке в Xamarin.Forms. Спасибо за вашу помощь. –

Смежные вопросы