是否可以在UWP应用中隐藏NavigationView窗格,但仍在其中显示Frame控件?
一点背景信息:我正在尝试实现一种UI模式,其中用户仅锁定到某些特定的屏幕。用户应该能够以“引导”方式导航,但不能自由导航。禁用或隐藏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;
当您要显示窗格时,如果仍在声明导航视图的页面上,则直接将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();