2012-05-03 14 views
7

Sto costruendo un'app Metro Style per Win8 che richiede il passaggio di due valori di testo sulla navigazione frame. Per un parametro, funziona, ma per due parametri non funziona. Per favore aiuto! Ho provato il seguente: this.Frame.Navigate (typeof (SecondPage), textblock1.Text + textblock2.Text);Come passare più di un parametro sulla navigazione frame in App Metro Style?

Non viene visualizzato alcun errore ma non funziona.

risposta

8

Creare una nuova classe con 2 proprietà e impostare le proprietà sui valori del blocco di testo. Quindi passi questo oggetto quando navighi.

creare la classe di carico utile:

public class Payload 
{ 
public string text1 { get;set;} 
public string text2 { get;set;} 
} 

quindi popolare la classe di carico utile:

Payload payload = new Payload(); 
payload.text1 = textblock1.Text; 
payload.text2 = textblock2.Text; 

Poi quando si chiama Naviga passare l'istanza di carico utile in questo modo:

this.Frame.Navigate(typeof(SecondPage),payload); 
+0

come ottenere i valori in secondpage? – rams

+0

@rams http://social.msdn.microsoft.com/Forums/da/winappswithcsharp/thread/8cb42356-82bc-4d77-9bbc-ae186990cfd5 – 4imble

0
+0

Hai controllato il link fornito da 4imble sulla risposta di Allan Muller? Inoltre, se pensi che questa sia la risposta alla domanda originale, ti preghiamo di copiare/incollare la spiegazione pertinente (e il codice) nel caso in cui il collegamento scompaia un giorno, grazie. – m4rtin

1

Ho preso un oggetto dizionario come questo.

Dictionary<string, string> newDictionary = new Dictionary<string, string>(); 
newDictionary.Add("time", itemObj.repTime); 
newDictionary.Add("message", itemObj.repMessage); 
Frame.Navigate(typeof(ViewDetails),newDictionary); 

A pagina ViewDetails.xaml.cs avevo recuperato i dati di questo tipo,

protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     Dictionary<string, string> myDictionary = new Dictionary<string, string>(); 
     myDictionary = e.Parameter as Dictionary<string, string>; 
     timeTB.Text = myDictionary["time"].ToString(); 
     messageTB.Text = myDictionary["message"].ToString(); 
    } 
+0

Funziona solo se entrambi i parametri sono dello stesso tipo, come nell'esempio. Ma non funziona per diversi tipi di valore (int, float, ecc ....) – Juanin

+0

Sì, hai ragione. Ma l'OP voleva passare due parametri di testo nella domanda. Ho risposto di conseguenza :) –

Problemi correlati