Xamarin Forms/Prism 8 - 带有 NavigationPage 导航的 TabbedPage 无法正常工作

Posted

技术标签:

【中文标题】Xamarin Forms/Prism 8 - 带有 NavigationPage 导航的 TabbedPage 无法正常工作【英文标题】:Xamarin Forms/Prism 8 - TabbedPage with NavigationPage navigation not working properly 【发布时间】:2021-03-25 03:57:12 【问题描述】:

在 Prism 8 之前有效的解决方案未按预期工作。在 GitHub 示例上有一个简单的解决方案可以显示问题。

Xamarin Forms 应用有一个带有 3 个选项卡的 MainPage(TabbedPage)。每个选项卡上都有一个 NavigationPage。

<?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:views="clr-namespace:SuperBarato.Views"
            x:Class="SuperBarato.Views.MainPage">

    <TabbedPage.Children>
        <NavigationPage Title="Promoções"
                        IconImageSource="tag.png">
            <x:Arguments>
                <views:PromotionsPage/>
            </x:Arguments>
        </NavigationPage>

        <NavigationPage Title="Nova"
                        IconImageSource="signs.png">
            <x:Arguments>
                <views:NewPromotionPage/>
            </x:Arguments>
        </NavigationPage>

        <NavigationPage Title="Conta"
                        IconImageSource="user.png">
            <x:Arguments>
                <views:AccountPage/>
            </x:Arguments>
        </NavigationPage>
    </TabbedPage.Children>
</TabbedPage>

在第二个选项卡上,有一个调用 MarketsPage 的按钮。但 MarketsPage 未添加到第二个选项卡 NavigationPage 堆栈中。它已添加到第三个选项卡 NavigationPage 堆栈中。

正如 Prism 文档 (App.xaml.cs) 所述,我尝试在运行时创建选项卡。这解决了问题。但是,它会出现其他问题。

我用来浏览页面的一些命令不起作用。我无法清除 TabbedPage 选项卡内的 NavigationPage 堆栈。

await _navigationService.NavigateAsync("/SignInPage")

await _navigationService.NavigateAsync("../SignInPage")

有人知道如何在 Prism 8 上使用带有 NavigationPages 的 Xamarin Forms TabbedPages 吗?

GitHub 示例:https://github.com/Schinwinkwinsky/XFPrismTabPagesNabPages

【问题讨论】:

是的,我尝试了很多方法,发现当在 TabbedPage XAML 上声明选项卡时,Prism 不会将视图连接到其各自的视图模型。它适用于 Prism 的最新版本(7.2.0.1422),但不适用于 8 版本。 【参考方案1】:

Prism GitHub 上有一个问题,它正在处理这个问题。 Brian Laguna 已经完成(并解释)说:

就是那个男人!

https://github.com/PrismLibrary/Prism/issues/2279#issuecomment-746959294

【讨论】:

以上是关于Xamarin Forms/Prism 8 - 带有 NavigationPage 导航的 TabbedPage 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Forms Prism:prism ResourceDictionary 中已存在具有键“Xamarin.Forms.NavigationPage”的资源

LINKs: Xamarin.Forms + Prism

Xamarin.Forms+Prism—— 简单提示UI的使用

TabbedPage 中的 Xamarin Forms Prism Navigation 表现为 PushModelAsync 或导航栏消失

带农历日历的DatePicker控件!Xamarin控件开发小记

Xamarin Forms:带圆角的 StackLayout