xaml - 如何仅在特定页面上设置弹出菜单 - .NET MAUI

标签 xaml maui flyout

我正在制作的应用程序是一个带有膳食食谱的应用程序。启动应用程序后,向用户显示的第一件事是登录页面,用户输入数据并单击“登录”按钮后,将转到主页。在该页面上有一些定义的菜肴菜单以及应该是菜单的内容,即左上角的弹出菜单(作为导航栏的一部分),但没有这样的东西。唯一显示的是一个箭头,可带您返回登录页面。我在 appshell 中使用元素(开胃菜、主菜和甜点)定义了弹出窗口,并尝试添加属性,以便弹出窗口在登录页面上不可见,但仅在登录后可见。对于登录页面,我设法使它可以在 Shell.FlyoutBehavior="Disabled"属性的帮助下实现,但是对于主页的“Flyout”属性来说,这不起作用。

AppShell 代码:

<Shell
    x:Class="ReceptiUI.AppShell"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:local="clr-namespace:ReceptiUI"
    Shell.FlyoutItemIsVisible="True"
    Shell.FlyoutBehavior="Flyout">

<ShellContent
    Shell.FlyoutBehavior="Disabled"
    Title="Home"
    ContentTemplate="{DataTemplate local:Login}"
    Route="Login" />

<ShellContent
    Shell.FlyoutBehavior="Flyout"
    Title="Home"
    ContentTemplate="{DataTemplate local:MainPage}"
    Route="MainPage"/>

<FlyoutItem Title="Predjelo" Icon="breakfast.png">
   <ShellContent ContentTemplate="{DataTemplate local:Breakfast}"/>
</FlyoutItem>
<FlyoutItem Title="Glavno jelo" Icon="food.png">
    <ShellContent ContentTemplate="{DataTemplate local:Lunch}"/>
</FlyoutItem>
<FlyoutItem Title="Desert" Icon="dinner.png">
     <ShellContent ContentTemplate="{DataTemplate local:Dinner}"/>
</FlyoutItem>
<FlyoutItem Title="Meni" Icon="dinner.png">
    <ShellContent ContentTemplate="{DataTemplatelocal:ListaJela}"/>
</FlyoutItem>

我还设置了这些属性 'Shell.FlyoutItemIsVisible="True"' 主页上有 'Shell.FlyoutBehavior="Flyout"',但仍然没有弹出菜单。

最佳答案

你可以写一个 FlyoutPage在主页中而不是使用 AppShell 中的 shell 弹出按钮。

这是代码演示:

<FlyoutPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
            xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
            xmlns:local="clr-namespace:FlyoutPageNavigation"
            x:Class="FlyoutPageNavigation.MainPage">
    <FlyoutPage.Flyout>
        <local:FlyoutMenuPage x:Name="flyoutPage" />
    </FlyoutPage.Flyout>
    <FlyoutPage.Detail>
        <NavigationPage>
            <x:Arguments>
                <local:ContactsPage />
            </x:Arguments>
        </NavigationPage>
    </FlyoutPage.Detail>
</FlyoutPage>

在 AppShell 中,您只需编写一个普通的导航即可从登录页面导航到主页。

关于xaml - 如何仅在特定页面上设置弹出菜单 - .NET MAUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74995206/

相关文章:

c# - NETSDK1201 : For projects targeting . NET 8.0 及更高版本,默认情况下指定 RuntimeIdentifier 将不再生成自包含应用程序

mvvm - 模板 10 UWP 如何绑定(bind)到 MenuFlyoutItem 内的 autoSuggestBox

css - 鼠标悬停时展开的菜单,完全通过 CSS 完成?

c# - 将 Storyboard 放在应用程序资源中

xaml - 在开发 Windows 8 Store 应用程序时处理不同的方向

c# - xamarin 形成清除选择器选择

entity-framework-core - .NET MAUI 集成测试 - FileNotFoundException : Could not load file or assembly Microsoft. Maui.Essentials

c# - 带有 SharedSizeGroup 列的网格表现得很奇怪(*不是*无限循环)

c# - 信任其他 CA 并在 net6 MAUI 解决方案中使用 Android 证书存储

c# - 如何延迟 Button.Flyout 的出现?