完全隐藏 NavigationView 窗格

Hide NavigationView pane completely

有没有办法在 UWP 应用程序中隐藏 NavigationView 窗格,但仍显示其中的 Frame 控件?

一些背景信息:我正在尝试实现一种 UI 模式,在该模式下,用户仅被锁定到某些特定屏幕。用户应该能够以 "guided" 的方式导航,但不能自由导航。禁用或隐藏 NavigationItems 是不够的,因为它可能会造成混淆。用户应该完全清楚,如果他想再次自由导航,他必须离开应用程序的这种锁定状态。

我正在使用 WinUI 库中的 NavigationView。

这是我的 NavigationView XAML 代码的简化片段:

<Grid>
    <muxc:NavigationView x:Name="MainNavView"
                            IsTabStop="False"
                            ItemInvoked="OnNavigationViewItemInvoked"
                            AlwaysShowHeader="False"
                            PaneDisplayMode="LeftCompact"
                            IsBackButtonVisible="Auto"
                            BackRequested="MainNavView_BackRequested">
        <muxc:NavigationView.AutoSuggestBox>
            ...
        </muxc:NavigationView.AutoSuggestBox>
        <muxc:NavigationView.MenuItems>
            ...
        </muxc:NavigationView.MenuItems>
        <muxc:NavigationView.PaneFooter>
            ...
        </muxc:NavigationView.PaneFooter>
        <Frame x:Name="RootFrame"
                Navigated="RootFrame_Navigated" />
    </muxc:NavigationView>
</Grid>

有一个IsPaneVisible 属性可以判断窗格是否显示。当您想隐藏窗格时,将 IsPaneVisible 设置为 false。

MainNavView.IsPaneVisible = false;

当你想显示窗格时,如果你还在声明navigationView的页面,直接将IsPaneVisible设置为true。

MainNavView.IsPaneVisible = true;

或者如果你在另一个页面,你可以声明一个静态的MainPage实例,然后调用show方法。

MainPage.cs:

public static MainPage Current;
public void showPane()
{
    MainNavView.IsPaneVisible = true;
}
public MainPage()
{
    this.InitializeComponent();
    Current = this;
}

AnotherPage.cs:

MainPage.Current.hidePanel();