Este documento explica cómo ocultar la barra de estado en aplicaciones de Windows Phone 8.1. La barra de estado ya no se puede ocultar mediante XAML como en versiones anteriores, sino que debe accederse a través de código utilizando el método GetForCurrentView y luego ocultarse con HideAsync. El documento proporciona un ejemplo de código para crear un método asíncrono que oculte la barra de estado y cambie su color de fondo.
1. Vicente Guzman
MVP Windows Platform Development
Como ocultar el StatusBar en Windows
Phone 8.1
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
ForegroundColor
Windows.UI.Color
ForegroundColor
System.Windows.Media.Color
BackgroundColor
Windows.UI.Color
Background
bool IsVisible IAsyncAction HideAsync()
IAsyncAction ShowAsync()
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.
2. Vicente Guzman
MVP Windows Platform Development
Veamos cómo funciona, empecemos creando un nuevo proyecto en blanco:
Si lo ejecutamos tal y como se encuentra, podremos ver que el StatusBar.
3. Vicente Guzman
MVP Windows Platform Development
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:
4. Vicente Guzman
MVP Windows Platform Development
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:
5. Vicente Guzman
MVP Windows Platform Development
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