【发布时间】:2018-02-26 11:16:54
【问题描述】:
当我在列表中选择一条记录时,我希望应用程序在活动选项卡中导航,如下所示:
我的 TabbedPage-Xaml 看起来像这样
<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"
xmlns:views="clr-namespace:Futura.SA.CustomerModule.Views;assembly=Futura.SA.CustomerModule"
x:Class="Futura.SA.CustomerModule.Views.CustomerDetailPage">
<TabbedPage.Children>
<NavigationPage Title="Main">
<x:Arguments>
<views:CustomerDetailMainDataPage x:Name="TbpgMainData" Icon="barcode_white_24.png"/>
</x:Arguments>
</NavigationPage>
<NavigationPage Title="Address">
<x:Arguments>
<views:CustomerDetailAddressSelectionPage x:Name="TbpgAddressSelectionPage"/>
</x:Arguments>
</NavigationPage>
</TabbedPage.Children>
</TabbedPage>
当我选择页面“地址”并调用 _navigationService.NavigateAsync("NextPage") 时,我假设选项卡的页面被替换为“NextPage”。但相反,它正在远离我的 TabbedPage,NextPage 显示为常规页面。当我回去时,我可以再次看到我的 TabbedPage。我可以如何实现我想要的行为吗?
我将 Prism 6.3 与 Xamarin.Forms 2.4 一起使用。
非常感谢
【问题讨论】:
-
是否有意将
NavigationPages 低于TabbedPage? -
是的,我在 TabbedPage 的视图模型中导航,(例如 CustomerDetailAddressSelectionPage)我想从那个页面导航到另一个页面。在我的场景中,我有一个地址列表,用户应该选择一个进行编辑。我希望 Tab Host 保持不变。如果有助于澄清,可以添加一些图像
-
不确定是否没有更多代码,但我认为您的 _navigationservice 实例是错误的...您需要来自 CustomerDetailAddressSelectionPage 的实例,而不是应用程序根目录中踢出标签页的实例.您是否在 VM 中为 CustomerDetailAddressSelectionPage 注入导航服务?
-
您对导航服务实例的看法是正确的!因为每个 TabbedPage 只是特定模型部分的不同视图,所以我在所有 TabPages 之间共享了一个 ViewModel(因此也是导航服务实例)。可悲的是,我不能接受您的评论作为答案
-
我将其添加为答案 ;)
标签: xamarin xamarin.forms prism