El otro día al estar desarrollando una aplicación de Windows Phone 8.1 quería esconder la barra de estado, pero para mi sorpresa no la encontré en XAML.
Y es que para los que venimos desde Windows Phone 7.0 hasta 8.0, esta se encuentra establecida mediante la Shell: SystemTray.IsVisible = “False” en cualquier página, pero esta no se encuentra disponible para Windows Phone 8.1.
Con el lanzamiento del nuevo SDK de Windows Phone 8.1 viene un nuevo StatusBar, el cual sustituye al SystemTray de Windows Phone basado en Silverlight, y a diferencia del SystemTray, el StatusBar solo se puede acceder a través de código, además de que su funcionalidad ha cambiado.
Al igual que el nuevo StatusBarProgressIndicator, solo se puede acceder a través de código con el método GetForCurrentView.
Tabla comparativa con respecto a funcionalidades:
SystemTray |
StatusBar |
Observaciones |
System.Windows.Media.Color |
Windows.UI.Color |
|
System.Windows.Media.Color |
Windows.UI.Color |
|
bool IsVisible |
Dos métodos reemplazan el único DependencyProperty |
|
double Opacity |
double BackgroundOpacity |
No cambia el contenido cuando el valor es menor que 1 |
event Hiding |
Nuevo |
|
event Showing |
Nuevo |
La mayor diferencia en la tabla anterior no son los nuevos acontecimientos, no es el cambio de IsVisible a los nuevos métodos. La mayor diferencia es que el cambio es la funcionalidad en el establecimiento de la opacidad. En Windows Phone basado en Silverlight, cuando se establece la opacidad a un valor menor que 1, el contenido de la página se desplaza hacia arriba en el espacio de la bandeja. Ahora, cuando se establece la BackgroundOpacity el contenido de la página no se desplaza hacia arriba.
Veamos cómo funciona, empecemos creando un nuevo proyecto en blanco:
Si lo ejecutamos tal y como se encuentra, podremos ver que el StatusBar.
Ingresemos al CodeBehind de nuestro archivo MainPage.xaml
Agreguemos la siguiente directiva using:
using Windows.UI.ViewManagement;
Ahora creemos un método asíncrono, al cual pueden nombrar StatusBarChange o como gusten.
private async void StatusBarChange ()
{
}
Dentro de este declararemos una variable de tipo StatusBar y utilizaremos el método HideAsync:
StatusBar statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
await statusBar.HideAsync();
Por último solo mandémoslo llamar, esto situando la siguiente línea dentro de nuestro MainPage:
this.StatusBarChange();
Compilemos y veamos el resultado:
Ahora bien, si nuestro StatusBar se mostrara pero queremos ponerle un color, podemos manejar la propiedad BackgrounColor, pero para esto antes habrá que agregar la directiva: using Windows.UI;
statusBar.BackgroundOpacity = 1;
statusBar.BackgroundColor = Colors.Red;
Guardemos y compilemos:
Código completo:
Espero y les haya gustado este pequeño tutorial sobre una de las tantas nuevas características del nuevo SDK de Windows Phone 8.1
Y como siempre, aquí les dejo el ejemplo para su descarga:
Hasta la proximal!
Más información: Visually Located