如何在WPF中为某些视图禁用“汉堡菜单”?

时间:2018-07-03 08:41:12

标签: wpf mahapps.metro

我有一个登录页面,我想在应用程序启动时显示在我的主窗口中,该窗口的左侧有一个汉堡菜单。如何隐藏/禁用此功能?

这是使用WPF和MahApps.Metro库创建的桌面应用程序。我在这里不知所措,任何带有示例代码的指导都将受到高度赞赏。

谢谢。

1 个答案:

答案 0 :(得分:0)

取决于窗口的大小,应该在顶部显示一个较大的菜单,或者在SplitView窗格中显示包含菜单的Hamburger按钮。此功能由自适应触发器提供。以下代码段根据窗口大小320和720更改水平菜单和“汉堡包”按钮的可见性。

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup>
        <VisualState x:Name="MediumState">
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="720" />
            </VisualState.StateTriggers>
            <VisualState.Setters>
                <Setter Target="HorizontalMenu.Visibility" Value="Visible" />
                <Setter Target="HamburgerButton.Visibility" Value="Collapsed" />               
            </VisualState.Setters>
        </VisualState>
        <VisualState x:Name="XSmallState">
            <VisualState.StateTriggers>
               <AdaptiveTrigger MinWindowWidth="320" />
            </VisualState.StateTriggers>
            <VisualState.Setters>
                <Setter Target="HamburgerButton.Visibility" Value="Visible" />
            </VisualState.Setters>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

“窗口”大小的典型触发器为320、548、720和1024。

较大的Window菜单仅在StackPanel中定义:

<StackPanel x:DeferLoadStrategy="Lazy" x:Name="HorizontalMenu" Orientation="Horizontal" Visibility="Collapsed">
    <Button Content="One" Style="{StaticResource MenuButtonStyle}" />
    <Button Content="Two" Style="{StaticResource MenuButtonStyle}" />
</StackPanel>