2010-09-15 33 views
5

Estoy desarrollando una aplicación WP7 y la aplicación necesita cambiar el icono de un botón en la barra de aplicaciones dado el estado de una solicitud. que he intentado:Cambiar barra de aplicaciones buttonicon en tiempo de ejecución

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

Esto no me da un error en el código, pero no se puede compilar .... ninguna pista para hacer esto es apreciado :)

gracias

Respuesta

11

ApplicationBar es un control especial que no se comporta como otros controles de Silverlight (consulte Peter Torr's post on the subject). Una de las consecuencias es que los nombres dados en XAML a los botones de la barra de la aplicación generan campos en código subyacente que siempre son nulos.

Supongo que, en su caso, el campo btnStart en DetailsAppBar está establecido en nulo, y por lo tanto, al intentar establecer su propiedad IconUri, se genera una NullReferenceException.

Para acceder a un botón en una barra de aplicaciones, en su lugar debe hacer referencia a él por su índice basado en cero en la lista de botones. Por ejemplo, el siguiente código devuelve una referencia al tercer botón en la barra de la aplicación:

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

sí me acaba de encontrar fuera :) gracias –

8

lo descubrió ...

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

hizo el truco :)

Cuestiones relacionadas