2016-05-13 4 views
2

У меня есть приложение Xarmarin Forms с использованием Prism и Unity, и у меня возникают проблемы с навигацией на вкладке.Prism Xamarin Forms Tabbed Навигация по страницам

Я использую следующие версии: Prism.Forms v6.1.0-pre5 Prism.Unity.Forms v6.2.0-pre5 Xamarin.Forms v2.3.0.38-pre2

Моя страница вкладками выглядит следующим образом

<?xml version="1.0" encoding="utf-8" ?> 
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms" 
     prism:ViewModelLocator.AutowireViewModel="True" 
     xmlns:local="clr-namespace:ServiceOrdersMobileApps.Views;assembly=ServiceOrdersMobileApps" 
     x:Class="ServiceOrdersMobileApps.Views.ServiceOrderTabs"> 
<NavigationPage Title="Summary"> 
    <x:Arguments> 
    <local:ServiceOrderSummary /> 
    </x:Arguments> 
</NavigationPage> 
<NavigationPage Title="Complete"> 
    <x:Arguments> 
    <local:ServiceOrderDetails /> 
    </x:Arguments> 
    </NavigationPage> 
</TabbedPage> 

Я пытаюсь перейти на страницу с закладками на странице сведений служба заказа выбранного, но когда я перемещаться в соответствии с этим blog post. Он перемещается мимо вкладок страницы в отдельный Service Order Detail Page

var p = new NavigationParameters(); 
p.Add("serviceorder", context); 
await _navigationService.NavigateAsync($"{nameof(ServiceOrderTabs)}/{nameof(ServiceOrderDetails)}",p); 

ответ

2

У вас есть страницы, завернутые в родовом NavigationPage, что призма не знает о. Вам необходимо создать полученный NavigationPage и зарегистрировать его для навигации. Затем используйте это, чтобы обернуть ваши COntentPages. Затем вы можете попробовать выполнить навигацию как «ServiceOrdersTabs/MyNavigationPage/ServiceOrdersDetails».

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

Для совместной работы вам необходимо создать другую навигационную страницу для каждой вкладки (ServiceOrderSummaryNavPage, ServiceOrdersDetailsNavPage и т. Д.), Чтобы каждая вкладка была уникальной.

Кстати, откуда вы переходите?

+0

Если я создаю ServiceOrdersDetailsNavPage, который реализует NavigationPage, как я могу создать дочерние объекты ServiceOrdersTabs с моим ServiceOrdersDetailsNavPage, потому что я не могу вызвать базовый конструктор, которому нужна страница в XAML. Спасибо –

+0

Просто добавьте страницы в TabbedPage в XAML, как обычно. –

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