问题描述
我正在使用 TabbedPage 在 Xamarin 表单中显示底部选项卡。为此,我以编程方式将子页面(Page1、Page2、Page3)添加到 TabbedPage。首先我有登录屏幕,点击登录按钮它会重定向到标签页,并会在底部显示所有三个标签。
还有其他页面(Page4、Page5)我们没有在标签页中显示为子页面。但根据用户打开 page4 或 page5 时的要求,底部标签栏应显示。
总的来说,我的意思是底部标签栏应该显示给应用程序中的所有屏幕,即使某些屏幕不是 TabbedPage 的子屏幕。
谁能告诉我如何完成这项任务。提前致谢。
解决方法
您可以将 TabbedPage 的子项包装在 NavigationPages 中,这样当您从这些选项卡之一导航到另一个页面时,它们仍会显示:
<?xml version="1.0" encoding="UTF-8" ?>
<TabbedPage
x:Class="SampleTabbedPage.Views.MainPage"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:views="clr-namespace:SampleTabbedPage.Views;assembly=SampleTabbedPage"
NavigationPage.HasNavigationBar="False">
<!-- Page 1 -->
<NavigationPage IconImageSource="ic_home">
<x:Arguments>
<views:HomePage />
</x:Arguments>
</NavigationPage>
<!-- Page 2 -->
<NavigationPage IconImageSource="ic_profile">
<x:Arguments>
<views:ProfilePage />
</x:Arguments>
</NavigationPage>
</TabbedPage>
在代码后面:
var tabbedPage = new TabbedPage();
tabbedPage.Children.Add(new NavigationPage(new Page1()));
tabbedPage.Children.Add(new NavigationPage(new Page2()));
tabbedPage.Children.Add(new NavigationPage(new Page3()));
然后你可以从其中一个子页面调用:
await Navigation.PushAsync(new YourNewPage());