簡體   English   中英

Prism Xamarin表單選項卡式頁面導航

[英]Prism Xamarin Forms Tabbed Page Navigation

我有一個使用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>

我試圖導航到選擇了服務訂單詳細信息頁面的選項卡式頁面,但是當我根據此博客文章導航時。 它導航至選項卡式頁面之外的單獨服務訂單明細頁面

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

您將頁面包裝在Prism不知道的通用NavigationPage中。 您需要創建一個派生的NavigationPage並將其注冊以進行導航。 然后使用它包裝您的COntentPages。 然后,您可以嘗試像“ ServiceOrdersTabs / MyNavigationPage / ServiceOrdersDetails”一樣導航。

但是,即使現在考慮到這一點,可能也行不通,因為您將擁有同一NavigationPage的多個實例,Prism將使用找到的第一個實例並使用該實例。

要變通,您必須為每個選項卡(ServiceOrderSummaryNavPage,ServiceOrdersDetailsNavPage等)創建一個不同的NavigationPage,以確保每個選項卡都是唯一的。

順便說一下,您從哪里導航?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM