Modificar la navegación inicial en Windows Phone 7…

Es posible que en alguna de las aplicaciones que desarrolles para Windows Phone 7 tengas que modificar la navegación inicial dependiendo de algún parámetro; por ejemplo, algo común es que si el usuario no ha iniciado sesión se le envíe a la página de login y si ya lo ha hecho, se envíe directamente a la página principal de la aplicación.

Buscando la mejor forma de hacerlo, o mejor dicho, la que funcionara ya que la aproximación que estaba realizando no era válida, encontré el post de Peter Torr que propone dos soluciones para controlar esta situación.

Cualquiera de los dos métodos funciona para lograr lo que se desea; sin embargo, es importante tener en cuanta algunos detalles:

  • Si posteriormente quieres emplear el NavigationService para moverte entre páginas tienes que tener en cuenta que ese código se ejecutará provocándote errores. Si solo deseas que eso se evalúe la primera vez, lo mejor es que te desuscribas del evento para evitar que vuelva a ser llamado cada vez que hagas uso de los servicios de navegación.
  • Si estás con Windows Phone 7, la vista de login se quedará en el stack de navegación. Si el usuario pulsa el botón atrás le volverá a aparecer dicha vista. Por lo tanto, es recomendable utilizar la aproximación de un elemento que se coloque por encima de la vista principal y controlar su visibilidad.
  • Si por el contrario, estás con Windows Phone 7.1, parece que Microsoft ha oído las quejas de la gente por los foros añadiendo la posibilidad de eliminar una entrada del stack de navegación con el método NavigationService.RemoveBackEntry

Así que tened en cuenta estas situaciones para evitar modificar el código que ya estaba escrito y funcionando.