2010-05-05 8 views
5

Tomado de Exercise 1: Creating Windows Phone Applications with Microsoft Visual Studio 2010 Express for Windows Phone¿Cuál es la diferencia entre el método NavigationService.Navigate() y la propiedad PhoneApplicationFrame.Source?

Tarea 3: Paso 9

// navigate 
this.NavigationService.Navigate(new Uri("/PuzzlePage.xaml", UriKind.Relative)); 

Nota:
La clase PhoneApplicationPage proporciona métodos y propiedades para navegar a las páginas a través de su propiedad NavigationService. Puede llamar al método Navigate del NavigationService y pasar el URI para la página como parámetro. También puede usar los métodos GoBack y GoForward para navegar hacia atrás o hacia adelante en el historial de navegación. El botón de retroceso de hardware también proporciona navegación hacia atrás dentro de una aplicación. El controlador de eventos que se muestra arriba usa NavigationService para ir a la página PuzzlePage.xaml.

Tarea 4: Paso 3

(RootVisual as Microsoft.Phone.Controls.PhoneApplicationFrame).Source = 
    new Uri("/ErrorPage.xaml", UriKind.Relative); 

Nota:
...
Cada vez que se establece la propiedad de origen a un valor que es diferente del contenido que se muestra, el marco se desplaza a el nuevo contenido.
...

¿Cuáles son las diferencias y similitudes de ambas técnicas?

Respuesta

6

Básicamente, ambos hacen lo mismo.

NavigationService.Navigate es un servicio de navegación Silverlight nativo que permite la navegación asíncrona de un archivo xaml a otro (eliminando la necesidad de cargar controles de usuario) - hay una excelente pequeña descripción here.

La diferencia es que NavigationService tiene la capacidad de ir hacia atrás y hacia delante de forma similar a un navegador. Establecer la propiedad Source del PhoneApplicationFrame no lo hace.

Todavía es temprano y es probable que sea demasiado pronto para adivinar cuál debería usar.

NavigationService tiene la ventaja de ser una clase nativa de Silverlight, sin embargo, PhoneApplicationFrame.Source es específico de WP.

+1

PhoneApplicationFrame.Source se hereda de Frame y, por lo tanto, no es específico de Windows Phone. No puedo probarlo ahora, pero sí creo que puede navegar a través de la pila de páginas incluso cuando usa la propiedad Fuente. Una diferencia entre el método Navigate y la propiedad Source es que no puede llamar a Navigate en una página que aún no se ha cargado, mientras que puede establecer la propiedad Source siempre que lo desee. –

+0

"no puede llamar a Navigate en una página que aún no se ha cargado"? ¿Significa esto que no puedo navegar a una página que nunca antes haya sido navegada? Muy confuso. –

Cuestiones relacionadas