XAML Maui AppShell -层叠菜单(可展开的子菜单元素)

1mrurvl1  于 2022-12-07  发布在  Shell
关注(0)|答案(1)|浏览(285)

我试图在AppShell.xaml中使用MenuFlyoutItemMenuFlyoutSubItem添加一个级联菜单,但它不起作用。
这里的代码

<Shell.FlyoutHeader >
        <VerticalStackLayout>
            <Label Text="MPC-Calculator"
                   FontAttributes="Bold"></Label>
        </VerticalStackLayout>
</Shell.FlyoutHeader>

<MenuFlyoutItem Text="Open"/>
    <MenuFlyoutSubItem Text="Send to">
        <MenuFlyoutItem Text="Bluetooth" />
        <MenuFlyoutItem Text="Desktop (shortcut)" />
        <MenuFlyoutSubItem Text="Compressed file">
            <MenuFlyoutItem Text="Compress and email" />
            <MenuFlyoutItem Text="Compress to .7z" />
            <MenuFlyoutItem Text="Compress to .zip" />
        </MenuFlyoutSubItem>
    </MenuFlyoutSubItem>

    <FlyoutItem Title="MPC" Icon="home_icon.png"  >
        <ShellContent
        Title="MPC-Calculator"
        ContentTemplate="{DataTemplate local:MainPage}"/>
    </FlyoutItem>

    <FlyoutItem Title="MPC - File Demo" Icon="add_icon.png">
        <ShellContent ContentTemplate="{DataTemplate page:MPCFileDemo}"/>
    </FlyoutItem>

    <FlyoutItem Title="File Open Test" Icon="file_open.png">
        <ShellContent ContentTemplate="{DataTemplate page:TestView}"/>
    </FlyoutItem>

    <MenuFlyoutSeparator  />
    <MenuFlyoutSeparator  />

    <FlyoutItem Title="Settings" Icon="tab_settings.png">
        <ShellContent ContentTemplate="{DataTemplate page:SettingsView}"/>
    </FlyoutItem>

    <ShellContent Title="About"
                  Icon="info.png"
                  ContentTemplate="{DataTemplate page:AboutView}" />

下面是输出结果。如您所见,显示了<MenuFlyoutItem Text="Send to" />,当我单击它时,无法显示子元素。

hzbexzde

hzbexzde1#

当.NET MAUI桌面应用程序被添加到NavigationPage或Shell应用程序中托管的任何ContentPage时,它们将显示一个包含菜单项的菜单栏。以下是xaml代码供您参考:

<ContentPage ...>

    <ContentPage.MenuBarItems>
        
        <MenuBarItem Text="File">
            
            <MenuFlyoutSubItem Text="Open">
                
                <MenuFlyoutItem Text="Open to do something">
                </MenuFlyoutItem>
                
            </MenuFlyoutSubItem>
        </MenuBarItem>
        
    </ContentPage.MenuBarItems>

</ContentPage>

有关详细信息,请参阅Display a menu bar in a .NET MAUI desktop app
您的要求是在FlyoutItem下显示子项,如下面的代码片段所示。不幸的是,这是一个功能请求:Feature Request New Navigation Bar to Mimic win ui Behavour In Shell,它还没有像@Shaw指出的那样被实现。你可以跟踪这个线程。

<FlyoutItem Title="Basic Input">
        <ShellContent
            Title="Basic Input"
            ContentTemplate="{DataTemplate local:SalesOrderPage}"
            Route="BasicInput" >
           <ChildItem x:Name="mnuInputVal" Text="Input Validations" Icon="" IconPosition="" />
           <ChildItem x:Name="mnubutton" Text="Button" Icon="" IconPosition="" />
            <ChildItem x:Name="mnuDropDownButton" Text="DropDownButton" Icon="" 
             IconPosition="" />    
        </ShellContent>
 </FlyoutItem>

相关问题