Скрытие BottomAppBar в UWP (Windows 10)

Я пытаюсь скрыть свой BottomAppBar, который предназначен только для администратора в моем приложении.

Я хочу, чтобы BottomAppBar был скрыт после его запуска и появлялся только тогда, когда я щелкаю правой кнопкой мыши.

На данный момент, когда я запускаю свое приложение, панель приложения видна в свернутом режиме, например:

Изображение

Надеюсь скрыть его полностью, чтобы пользователи не знали, что есть настройка page/bottomAppBar.

И вот мой код:

<Page.BottomAppBar>
    <AppBar Background="{StaticResource CitiKioskBackgroundBrush}"
            IsOpen="False"
            IsSticky="False">
        <StackPanel Orientation="Horizontal">
            <AppBarButton Name="SettingAppBarButton"
                          Click="SettingAppBarButton_Click"
                          Icon="Setting"
                          Label="Settings" 
                          Foreground="White"/>
        </StackPanel>
    </AppBar>
</Page.BottomAppBar>

person thalassophile    schedule 29.09.2017    source источник
comment
Рассмотрим свойство Видимость.   -  person Hans Passant    schedule 01.10.2017


Ответы (1)


Вы можете установить видимость нижней панели приложения на Collapsed, а затем в loaded event своей страницы написать логику для идентификации пользователя-администратора и установить видимость на Visible.. так что вы можете сделать что-то вроде этого..

XAML

<Page.BottomAppBar>
    <AppBar x:Name="appBarName" <!-- Added Name -->
            Visibility="Collapsed" <!-- Changed default Visibility -->
            Background="{StaticResource CitiKioskBackgroundBrush}"
            IsOpen="False"
            IsSticky="False"
            Visibility="Collapsed">
        <StackPanel Orientation="Horizontal">
            <AppBarButton Name="SettingAppBarButton"
                          Click="SettingAppBarButton_Click"
                          Icon="Setting"
                          Label="Settings" 
                          Foreground="White"/>
        </StackPanel>
    </AppBar>
</Page.BottomAppBar>

C# (код позади)

private void Page_Loaded(object sender, RoutedEventArgs e)
{
   if(admin)//your logic here to identify admin user
     appBarName.Visibility = Visibility.Visible;
}

ИЗМЕНИТЬ

Вы можете добавить следующий код в любой обработчик событий, который вам нужен, например, нажатие кнопки или событие RightTapped.

Обновлен код для переключения видимости

bool toggle=false;
//Code for toggling your app bar visibility 
private void UserControl_RightTapped(object sender, RoutedEventArgs e)
{   
    if(toggle)
    {
       appBarName.Visibility = Visibility.Visible; 
       toggle=false;
    }else{
       appBarName.Visibility = Visibility.Collapsed; 
       toggle=true;
    }

}
person Pratyay    schedule 29.09.2017
comment
Привет! Настройка видимости нижней панели приложений на Collapsed действительно мне очень помогла! Спасибо! - person thalassophile; 29.09.2017
comment
Однако, если я хочу, чтобы администратор просто выполнил событие щелчка правой кнопкой мыши в приложении, чтобы открыть панель приложений, что я должен написать для оператора if? - person thalassophile; 29.09.2017
comment
Мне удалось показать appBar, но как снова возникли проблемы с его скрытием, я разместил это ниже. Было бы здорово, если бы ее можно было решить. - person thalassophile; 29.09.2017
comment
Чтобы снова скрыть панель приложения, вы можете просто написать appBarName.Visibility = Visibility.Collapsed;, чтобы скрыть ее в своем событии. Также я бы рекомендовал вам не добавлять контент в раздел ответов. Скорее, пожалуйста, добавьте изменения в свой вопрос. - person Pratyay; 29.09.2017
comment
Я также добавил дополнительный код для отображения и скрытия панели приложений. - person Pratyay; 29.09.2017
comment
Я пробовал добавленные коды, я думаю, что невозможно написать один и тот же метод дважды для разных событий... - person thalassophile; 01.10.2017
comment
Прежде всего, не копируйте вслепую код, который я публикую, постарайтесь понять и спросите, нужна ли вам помощь. Во-вторых, если вы хотите переключить, вы можете просто использовать логическую переменную и использовать одно и то же событие для выполнения другой работы. . (обновил мой ответ с этим изменением в разделе Обновленный код для переключения видимости) - person Pratyay; 01.10.2017