Utilizando el framework de navegación – parte 2
Como pudieron observar en la primera parte de este post, el framework de navegación que se ha incluido en la versión 3 de Silverlight cuenta con dos controles el Frame y el Page. El control Frame es un control de contenido que es derivado de la clase ContentControl y que contiene un solo control hijo que es implementado por medio de su propiedad Content.
Como implementar el framework de navegación para aplicaciones existentes ó sin usar la plantilla por defecto.
Para esto como primera medida necesitamos agregar la siguiente referencia al proyecto System.Windows.Control.Navigation la cual nos permitirá incorporar las características del framework de navegación proporcionado por la versión de Silverlight 3.
Ahora bien como siguiente paso para permitir la funcionalidad del framework de navegación es agregar los siguientes espacios de nombre a tu XAML principal.
Son dos espacios de nombres los que deben agregar el espacio de nombres que le he colocado el alias de navigation contiene el control Frame el cual es el componente responsable de crear el contenedor en donde tendrá lugar toda la navegación y el segundo espacio de nombres al que le colocado el alias de uriMapper nos ayudara a exponer los controles Page los cuales contiene la extensión XAML como una URI lo cual proporciona una forma más fácil de recordar y usar los accesos al paginas XAML que deseamos acceder directamente del navegador.
Para agregar un nuevo control tipo Page es tan fácil como siempre se ha hecho para cualquier proyecto dentro de Visual Studio solo basta con agregar un nuevo elemento al proyecto y seleccionar la plantilla Silverlight Page ó Pagina Silverlight y listo.
En el siguiente fragmento de marcado XAML se encuentra una pequeña definición del control Frame junto con una definición de Mapeo de URIs. Observe que el control Frame contiene una propiedad compleja en se puede establecer directamente el objeto UriMapping o se puede hacer referencia como un recurso.
Es importante que al control Frame le establezcan un nombre en mi caso lo he llamado “Nav” les será muy útil para controlar la navegación desde la pagina control principal el cual contiene el control Frame y le establezcan la pagina inicial que debera ser cargado por el control Frame al cargarse el aplicativo Silverlight.
Ahora observa en la definición la propiedad UriMapper del control Frame el cual he establecido dos tipos de mapeos para URIs una estática y una parametrizada. La parametrizada es usada para que cuando ingresen al browser la URL raíz de la aplicación ingrese al control página principal y la segunda es para evitar el uso de la extensión .XAML
Si recuerdas el fragmento de marcado anterior puedes notar que existe la definición de un elemento Button el cual lo he colocado allí con el fin de poder navegar a otro control Page.
Dentro del manejador del evento Click del elemento Button uso el método Navigate() del control Frame para navegar a otro control Page en donde este será renderizado dentro del control Frame. Para definir la ruta de navegación se debe usar una instancia del objeto URI la cual debe ser del tipo relativo el framework de navegación no soporta navegación a paginas que se encuentran por fuera del dominio propio del aplicativo.
NavigationServices
Esta clase es del uso compartido y es disponible a través del control Page el cual le permite a estos controles acceder a las mismas funcionalidades que expone el control Frame como navegar a una determinada pagina, ir atrás, adelante verificar si se puede ir a la página anterior ó siguiente entre otras más funcionalidades.
saludos,
MANUEL FERNANDO