Скрыть значок панели приложения программно в приложении WP7 Silverlight? - PullRequest
13 голосов
/ 20 ноября 2010

У меня есть приложение для Windows Phone 7, встроенное в Silverlight. Это приложение использует панель приложения. Если приложение куплено, я хочу скрыть одну из кнопок на панели приложений. Однако я заметил, что класс ApplicationIconButton не предоставляет свойство «Visibility». В то же время я не видел способа динамического заполнения панели приложения во время выполнения.

Кто-нибудь может дать некоторое представление об этом? Это возможно? Если да, то как?

Спасибо!

Ответы [ 2 ]

32 голосов
/ 20 ноября 2010

Кнопки панели приложения работают не на объектной, а на индексной основе, как и следовало ожидать.Поэтому вам нужно указывать индекс кнопки всякий раз, когда вы хотите выполнить с ним определенное действие (например, отключить).

Например:

ApplicationBarIconButton b = (ApplicationBarIconButton)ApplicationBar.Buttons[0];
b.IsEnabled = false;

При этом вы можете создавать новыеЭкземпляры ApplicationBarIconButton и передача их в ApplicationBar:

for (int i = 0; i < 2; i++)
{
    ApplicationBarIconButton b = new ApplicationBarIconButton();
    b.Text = i.ToString();
    b.IconUri = new Uri("/Images/icon1.png", UriKind.Relative);
    ApplicationBar.Buttons.Add(b);
}

При удалении кнопок вы можете просто использовать RemoveAt, если вы знаете индекс кнопки для удаления:

ApplicationBar.Buttons.RemoveAt(0);
13 голосов
/ 20 ноября 2010

Я использую следующий метод для изменения кнопок панели приложения в моем коде:

private void UpdateAppbarButton(int index, string uriString, string text, bool visibility, EventHandler handler)
{
    ApplicationBarIconButton button1 = null;

    if (ApplicationBar.Buttons.Count > index)
    {
        button1 = ApplicationBar.Buttons[index] as ApplicationBarIconButton;
    }

    if (button1 != null)
    {
        {
            ApplicationBar.Buttons.Remove(button1);
        }
    }
    if (visibility == true)
    {
        button1 = new ApplicationBarIconButton(new Uri(uriString, UriKind.Relative));
        button1.Text = text;
        button1.Click += handler;
        ApplicationBar.Buttons.Insert(index, button1);
    }
}

UriString - это относительный путь к значку, который я хочу отобразить на кнопке приложения. Вы, вероятно, можете адаптировать этот код для своих собственных сценариев.

По сути, вместо того, чтобы установить кнопку видимой или нет, вы должны удалить кнопку (если она есть) или повторно добавить ее, если это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...