Windows Phone отключить кнопку панели приложений

Итак, в чем моя проблема? У меня есть popup, и когда я его открываю, я хочу отключить текущую страницу в моих приложениях для Windows Phone. поэтому я делаю это this.IsEnabled = false;, но мой ApplicationBar все еще доступен. Конечно, я пытаюсь с:

ApplicationBar.IsMenuEnabled = false;

Следующей моей идеей было сделать что-то вроде этого:

for (int i = 0; i < ApplicationBar.MenuItems.Count; i++)
{
    ((ApplicationBarMenuItem)ApplicationBar.Buttons[i]).IsEnabled = false;
}

и до сих пор нет результата. Я уверен, что некоторые делали это раньше, можете ли вы показать мне, как?


person Swift Sharp    schedule 05.10.2012    source источник


Ответы (5)


Панель приложения состоит из коллекции Buttons и коллекции MenuItems. В вашем примере вы хотели бы попробовать что-то вроде

foreach (var button in ApplicationBar.Buttons)
{
    ((ApplicationBarIconButton) button).IsEnabled = false; // disables the button
}

ApplicationBar.IsMenuEnabled = false; // this will prevent menu from opening

если это не работает, не думали ли вы скрыть панель приложений?
ApplicationBar.IsVisible = false;

person earthling    schedule 05.10.2012

Как насчет этого

((ApplicationBarIconButton)this.ApplicationBar.Buttons[1]).IsEnabled = true;

Где [1] — индекс кнопки, которую вы хотите включить/отключить.

Я точно знаю, что это работает, поскольку у меня есть код, который использует его в приложении для Windows Phone 8.

Можете ли вы опубликовать код для нас, чтобы увидеть, пожалуйста

person djack109    schedule 11.07.2014

К сожалению, согласно этому сообщению, существует ошибка, которая означает, что установка свойства IsEnabled для ApplicationBarMenuItem не выполняется до тех пор, пока меню не будет закрыто и повторно открыто.

person Kevan    schedule 29.10.2012

Просто включите использование Microsoft.Phone.Shell для получения пространства имен в вашем файле .cs, и вы сможете сделать следующее:

ApplicationBar.Enable();

а также

ApplicationBar.Disable();

Согласно http://new.efficientcoder.net/2010/10/windows-phone-7-quick-tip-17.html

person Guo Hong Lim    schedule 05.10.2012

попробуй это :

xaml:

<shell:ApplicationBar IsVisible="False">

.cs

Dispatcher.BeginInvoke(() =>
            {
                UIHelper.ToggleVisibility(Canvas_LocationAR_Trans);
                UIHelper.ToggleVisibility(Grid_LocARLoadingGrid);
                **ApplicationBar.IsVisible = true;**
            });
person Ankit    schedule 26.07.2013