2010-09-15 6 views
5

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

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"); 
} 

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

благодаря

ответ

11

ApplicationBar - это специальный элемент управления, который не ведет себя как другие элементы управления Silverlight (см. Peter Torr's post on the subject). Одним из последствий является то, что имена, указанные в XAML для кнопок панели приложений, генерируют поля в кодировке, которые всегда равны нулю.

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

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

button = (IApplicationBarIconButton)ApplicationBar.Buttons[2]; 
+0

да я только что нашел вне :) спасибо –

8

вычислял его ...

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

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

Смежные вопросы