2010-11-10 18 views
23

En una aplicación de Silverlight de Windows Phone 7 que llamo una nueva página utilizandoWP7: ¿Pasa el parámetro a la página nueva?

NavigationService.Navigate(new Uri("/View/SecondPage.xaml", UriKind.Relative)); 

Ahora quiero pasar parámetros a la nueva página. Entiendo un parámetro simple puede ser transmitida usando:

NavigationService.Navigate(new Uri("/View/TilgungsratePage.xaml?id=4711", UriKind.Relative)); 

y leer en la nueva página utilizando

protected override void OnNavigatedTo(Microsoft.Phone.Navigation.PhoneNavigationEventArgs e) 
{ 
    base.OnNavigatedTo(e); 
    String id = NavigationContext.QueryString["id"]; 
} 

Para los parámetros simples, esto está bien, pero ¿cómo puedo pasar una lista?
¿Objetos complejos?
Cualquier cosa menos valores simples?

+0

Tome un vistazo a este post así: [ WP7 Master - Navegación detallada con patrón de repositorio] (http://windowsphonegeek.com/articles/WP7-Master---Detail-Navigation-with-Repository-Pattern) –

+1

Echa un vistazo al último método en este enlace: http: // www.c-sharpcorner.com/UploadFile/deepak.sharma00/different-ways-of-passing-values-between-windo ws-phone-7-pag/ –

+0

Eche un vistazo a esta pregunta http://stackoverflow.com/questions/12444816/how-to-pass-values-parameters-between-xaml-pages –

Respuesta

21

En su libro "Programming Windows Phone 7" (capítulo 6, sección 3, "intercambio de datos entre páginas") Charles Petzold recomienda pro perties en la clase App (derivada de Application). Cada página tiene acceso a través del Application.Current. También es interesante el diccionario PhoneApplicationService.Current.State. Es útil para hacer un tumulto. Todo el capítulo tal vez sea interesante para leer.

+0

Y no desea para tener un estado global hay otros métodos http://stackoverflow.com/questions/12444816/how-to-pass-values-parameters-between-xaml-pages –

0

observe cómo implementé la navegación en PhoneCore Framework: A framework for building of WP7 application. En breve, he desarrollado mi servicio de navegación sobre la navegación WP7. Utiliza una asignación de página personalizada y permite pasar parámetros personalizados para ver el modelo automáticamente.

-1

Debería guardar el objeto en IsolatedStorage.

Simplemente serializarlo con la biblioteca Json.net y guardar la cadena en IsolatedStorage. ¡En la página siguiente, obtenga la cadena de IsolatedStorage y conviértala de nuevo al objeto que desee con la biblioteca json.net!

+0

Creo que esto es demasiado exagerado para pasar de una vista a otra.Mucho mejor para poner los datos en el objeto de la aplicación. – Nathan

0

utilizar variables globales, hacen una nueva clase de GlobalVariables:

public static class GlobalVariables 
{ 
    public static string my_string = ""; 
    public static int my_int = -1; 
} 

A continuación, puede acceder a la clase de variables globales para diferentes páginas:

GlobalVariables.variable_name; 
Cuestiones relacionadas