c# - página - pasar variables entre paginas php
¿Cómo pasar valores(parámetros) entre páginas XAML? (1)
Se han formulado preguntas similares anteriormente, pero esta pregunta se esfuerza por explorar más opciones y la capacidad de pasar objetos complejos.
La pregunta es cómo pasar parámetros, pero realmente debe dividirse en tres partes.
- Cuando navega entre páginas en una aplicación XAML, ¿cómo pasa los parámetros?
- ¿Cuál es la diferencia entre usar la navegación Uri y la navegación manual?
- ¿Cómo se pueden pasar los objetos (no solo las cadenas) cuando se utiliza la navegación URI?
Ejemplo de navegación Uri
page.NavigationService.Navigate(new Uri("/Views/Page.xaml", UriKind.Relative));
Ejemplo de navegación manual
page.NavigationService.Navigate(new Page());
La respuesta a esta pregunta se aplica a WP7, Silverlight, WPF y Windows 8.
Nota: hay una diferencia entre Silverlight y Windows8
- Windows Phone: las páginas se navegan a utilizar un Uri y los datos pasan como una cadena de consulta o una instancia
- Windows 8 : las páginas se navegan pasando el tipo y los parámetros como objetos
Métodos para pasar parámetros
1. Usando la cadena de consulta
Puede pasar parámetros a través de la cadena de consulta, usar este método significa tener que convertir sus datos en cadenas y codificarlos en la URL. Solo debe usar esto para pasar datos simples.
Página de navegación:
page.NavigationService.Navigate(new Uri("/Views/Page.xaml?parameter=test", UriKind.Relative));
Página de destino:
string parameter = string.Empty;
if (NavigationContext.QueryString.TryGetValue("parameter", out parameter)) {
this.label.Text = parameter;
}
2. Usando NavigationEventArgs
Página de navegación:
page.NavigationService.Navigate(new Uri("/Views/Page.xaml?parameter=test", UriKind.Relative));
// and ..
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
// NavigationEventArgs returns destination page
Page destinationPage = e.Content as Page;
if (destinationPage != null) {
// Change property of destination page
destinationPage.PublicProperty = "String or object..";
}
}
Página de destino:
// Just use the value of "PublicProperty"..
3. Usando navegación manual
Página de navegación:
page.NavigationService.Navigate(new Page("passing a string to the constructor"));
Página de destino:
public Page(string value) {
// Use the value in the constructor...
}
Diferencia entre Uri y navegación manual
Creo que la principal diferencia aquí es el ciclo de vida de la aplicación. Las páginas creadas manualmente se guardan en la memoria por razones de navegación. Lea más sobre esto here .
Pasando objetos complejos
Puede usar el método uno o dos para pasar objetos complejos (recomendado). También puede agregar propiedades personalizadas a la clase de Application
o almacenar datos en Application.Current.Properties
.