Скрыть панель NavigationView полностью - PullRequest
0 голосов
/ 24 февраля 2020

Есть ли способ скрыть панель NavigationView в приложении UWP, но по-прежнему отображать элемент управления Frame внутри него?

Небольшая справочная информация: я пытаюсь реализовать режим пользовательского интерфейса, в котором пользователь находится привязан только к некоторым указанным c экранам. Пользователь должен быть в состоянии ориентироваться "управляемым" способом, но не должен иметь возможность свободно перемещаться. Отключение или скрытие элементов NavigationItems недостаточно, так как это может сбить с толку. Для пользователя должно быть совершенно ясно, что, если он хочет снова свободно перемещаться, он должен покинуть это заблокированное состояние приложения.

Я использую NavigationView из WinUI библиотека.

Вот упрощенный фрагмент моего кода XAML NavigationView:

<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>

1 Ответ

1 голос
/ 25 февраля 2020

Существует свойство IsPaneVisible , которое позволяет определить, отображается ли панель. Если вы хотите скрыть панель, установите IsPaneVisible как false.

MainNavView.IsPaneVisible = false;

Если вы хотите показать панель, если вы все еще находитесь на странице, которая объявляет навигационный вид, непосредственно установите IsPaneVisible как true.

MainNavView.IsPaneVisible = true;

Или если вы находитесь на другой странице, вы можете объявить статический экземпляр c 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();
...