Изменить кнопку панели приложения во время выполнения - PullRequest
5 голосов
/ 15 сентября 2010

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

if (App.Servers[index].ServerState == "Enabled")
{
  DetailsAppBar.btnStart.IconUri = new Uri("/AppBar/appbar.stop.rest.png");
}

else
{
  DetailsAppBar.btnStart.IconUri = new Uri("/AppBar/appbar.transport.play.rest.png");
}

Это не дает мне ошибку в коде, но не может скомпилировать .... приветствуются любые советы, чтобы сделать это:)

спасибо

Ответы [ 2 ]

11 голосов
/ 16 сентября 2010

ApplicationBar - это специальный элемент управления, который не работает как другие элементы управления Silverlight (см. Пост Питера Торра по теме ).Одним из следствий этого является то, что имена, данные в XAML для кнопок панели приложения, генерируют поля в выделенном коде, которые всегда имеют значение null.

Я предполагаю, что в вашем случае поле btnStart в DetailsAppBar имеет значение null, итаким образом, попытка установить его свойство IconUri приводит к возникновению исключения NullReferenceException.

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

button = (IApplicationBarIconButton)ApplicationBar.Buttons[2];
8 голосов
/ 16 сентября 2010

разобрался ...

((ApplicationBarIconButton)ApplicationBar.Buttons[2]).IconUri = new Uri("/AppBar/appbar.stop.rest.png",UriKind.Relative);

сделал трюк:)

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