我有一个使用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);
答案 0 :(得分:3)
您将页面包装在Prism不了解的通用NavigationPage中。您需要创建派生的NavigationPage并将其注册以进行导航。然后用它来包装你的COntentPages。然后你可以尝试像&#34; ServiceOrdersTabs / MyNavigationPage / ServiceOrdersDetails&#34;那样导航。
但即使这样我现在考虑也可能不起作用,因为你将拥有相同NavigationPage的多个实例,Prism将使用它找到的第一个并使用它。
对于解决方法,您必须为每个选项卡(ServiceOrderSummaryNavPage,ServiceOrdersDetailsNavPage等)创建不同的NavigationPage,以确保每个Tab都是唯一的。
顺便问一下,你从哪里导航?