shell NavBarIsVisible应该是所有页面的全局设置

esbemjvw  于 12个月前  发布在  Shell
关注(0)|答案(1)|浏览(105)

在MAUI contentpage.xaml中,您可以按照下面的代码设置Shell.NavBarIsVisible=“false”。(仅显示页面和Appshell XAML的关键部分)。

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage 
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    x:Class="MAUI.DetailPage"
    
    Shell.NavBarIsVisible="True"
    Shell.TabBarIsVisible="False"
    Shell.FlyoutBehavior="Disabled"
    Title="Detail Page"
    >
...

<?xml version="1.0" encoding="UTF-8" ?>
<Shell
    x:Class="MAUI.AppShell"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:local="clr-namespace:MAUI"
    >
    <!-- home landing page -->
    <ShellItem
        Title="Home"
        Route="Home">
        <ShellContent
            Title="Home"
            ContentTemplate="{DataTemplate local:HomePage}"
            Route="HomePage"
                />
    </ShellItem>
   <FlyoutItem
    FlyoutDisplayOptions="AsMultipleItems">
        <Tab Title="Data">
            <ShellContent
            Title="List"
            ContentTemplate="{DataTemplate local:ListPage}"
            Route="ListPage" />
        </Tab>
        <Tab Title="About" >
            <ShellContent
            Title="About"
            ContentTemplate="{DataTemplate local:AboutPage}"
            Route="AboutPage" />
        </Tab>
   </FlyoutItem>
</Shell>

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MAUI.HomePage"
   Title="Home Page"
   >
...

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage 
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    x:Class="MAUI.ListPage"
    Title="List Page"
    >
...

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage 
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    x:Class="MAUI.AboutPage"
    Title="About">
...

导航序列
1.打开应用程序到主页
1.使用弹出型按钮定位到列表页
1.列表页(显示弹出型按钮、显示导航栏、显示选项卡栏)
1.导航到“详细信息”页面
1.详细信息页面(隐藏弹出按钮,显示导航栏,显示选项卡栏-即使在xaml中关闭选项卡栏,弹出按钮)
1.从选项卡栏选择“关于”页
1.关于页面(显示弹出型按钮、显示导航栏、显示选项卡栏)
1.从“关于”页面选择选项卡栏中的“列表”页面
1.显示详细信息页面(不是选定的列表页面,但这实际上是正确的),(根据xaml设置,弹出按钮隐藏,导航栏显示,选项卡栏隐藏)
1.单击“详细信息”页上一步按钮
1.显示列表页面(显示弹出按钮、显示导航栏、隐藏选项卡栏...应显示TabBar)
两个基本问题:

  • 步骤5期望隐藏选项卡栏。
  • 步骤11期望显示标签条。

如果我跳过步骤6、7、8;我可以在主页、列表页和详细信息页之间来回导航,详细信息页将始终显示弹出按钮、导航栏和选项卡栏。
在第11步之后,如果我回到主页,那么一切都将再次回到第1步。
问:在内容页面xaml中设置的Shell设置对所有应用程序页面都是全局的吗?或者我只是看到了一个bug?是否有不同的方式显示/隐藏弹出型按钮,选项卡栏,导航栏上的每一页的基础?

1szpjjfi

1szpjjfi1#

步骤5期望隐藏选项卡栏。
您可以尝试在单击ListPage并导航到DetailPage时将页面推送到导航堆栈。
举例来说:

await Navigation.PushAsync(new DetailsPage());

有关详细信息,请查看文档:NavigationPage

相关问题