如何使用 Xamarin 表单外壳在弹出项目中显示不同项目和在底部选项卡栏中显示不同项目?

问题描述

我正在处理汉堡菜单底部标签栏项目。下面是我的 AppShell.xaml 文件

<!-- LoginPage -->
<ShellContent Route="login"
     ContentTemplate="{DataTemplate local:LoginPage}">
</ShellContent>

<FlyoutItem Route="about" FlyoutdisplayOptions="AsMultipleItems">
        <ShellContent Title="About" Icon="icon_about.png" Route="AboutPage" ContentTemplate="{DataTemplate local:AboutPage}" />
        <ShellContent Title="browse" Icon="icon_Feed.png" ContentTemplate="{DataTemplate local:ItemsPage}" />
</FlyoutItem>

目前在弹出菜单底部选项卡中显示相同的项目。但是根据我在弹出菜单中的要求,我必须显示 AboutPage 和 browse 页面,并且在底部选项卡中我必须显示 Market Tab 和 Address 选项卡。但它在底部选项卡中仅显示“关于”选项卡和“浏览”选项卡。谁能告诉如何在底部标签显示不同的项目?

提前致谢。

解决方法

您可以使用 MenuItem 在弹出窗口中显示项目。并使用 FlyoutItem 在底部标签栏中显示标签,而无需将 FlyoutDisplayOptions 属性设置为 AsMultipleItems

XML:

<MenuItem
    Command="{Binding AboutCommand}"
    Icon="tab_about.png"
    Text="About" />

<FlyoutItem>
    <ShellContent Title="Market" ContentTemplate="{DataTemplate local:Market}" />
    <ShellContent Title="Address" ContentTemplate="{DataTemplate local:Address}" />
</FlyoutItem>

背后的代码:

  public ICommand AboutCommand => new Command(async () => await NavigatedToAbout());         

    async Task NavigatedToAbout()
    {
        await Shell.Current.GoToAsync("about");
    }
    public AppShell()
    {
        InitializeComponent();
        Routing.RegisterRoute("about",typeof(AboutPage));
   
        BindingContext = this;
    }

截图:

preview