棱镜Xamarin表格选项卡式页面导航

时间:2016-05-13 18:19:20

标签: c# xamarin xamarin.forms prism

我有一个使用Prism和Unity的Xarmarin Forms应用程序,导航到标签页时遇到问题。

我正在使用以下版本: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进行导航时。它通过选项卡页面导航到单独的服务订单明细页面

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

1 个答案:

答案 0 :(得分:3)

您将页面包装在Prism不了解的通用NavigationPage中。您需要创建派生的NavigationPage并将其注册以进行导航。然后用它来包装你的COntentPages。然后你可以尝试像&#34; ServiceOrdersTabs / MyNavigationPage / ServiceOrdersDetails&#34;那样导航。

但即使这样我现在考虑也可能不起作用,因为你将拥有相同NavigationPage的多个实例,Prism将使用它找到的第一个并使用它。

对于解决方法,您必须为每个选项卡(ServiceOrderSummaryNavPage,ServiceOrdersDetailsNavPage等)创建不同的NavigationPage,以确保每个Tab都是唯一的。

顺便问一下,你从哪里导航?