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”的资源
Xamarin.Forms+Prism—— 简单提示UI的使用
TabbedPage 中的 Xamarin Forms Prism Navigation 表现为 PushModelAsync 或导航栏消失