【问题标题】:How to navigate in TabbedPage and keep TabbedPage as Host如何在 TabbedPage 中导航并将 TabbedPage 保持为主机
【发布时间】: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


【解决方案1】:

最好看看你的目标是什么 _navigationservice 实例,很可能是错误的...

要让 PRISM 知道它应该使用哪个导航页面来实际导航,您需要定位来自 CustomerDetailAddressSelectionPage 的那个页面,而不是来自应用程序根目录中踢出标签页的那个页面。

检查您是否是构造函数在 VM 中为 CustomerDetailAddressSelectionPage 注入导航服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 2017-03-13
    相关资源
    最近更新 更多