2016-02-10 6 views
14

Ich versuche, einige Windows Phone 8 Projekte auf aktuelle UWP zu portieren, und stecken in diesem Code-Schnipsel stecken, die ich in alten Projekt verwendet habe.Übergeben Sie einige Parameter zwischen den Seiten in UWP

private void Restaurant_Tap(object sender, System.Windows.Input.GestureEventArgs e) 
    { 
     string types = "restaurant"; 
     string title = "restaurant"; 
     string url = string.Format("/NearbyPlaces.xaml?latitude={0}&longitude={1}&types={2}&title={3}", LocationLatitude.Text, LocationLangitude.Text, types, title); 
     NavigationService.Navigate(new Uri(url, UriKind.Relative)); 

    } 

In diesem Code benutzen ich Navigation einige Parameter zu einer anderen Seite zu übergeben. Ich konnte NaigationService nicht mehr verwenden, da UWP dies nicht unterstützt. Ich habe versucht, dies in meinem UWP-Projekt zu verwenden, aber ich denke, es wurde nur für die Übergabe eines Parameters, CMIIW, unterstützt.

Dieser Code gibt mir einen Fehler, weil es 5 Argumente, die +2 Überladungen ist. Meine Frage ist, wie man einige Parameter im UWP-Projekt richtig weitergibt.

Antwort

25

Was Sie in Windows (Phone) 8 übergeben haben, war nur eine einfache string, die alle Ihre Parameter enthalten. Sie mussten sie in der OnNavigatedTo() Methode Ihrer Zielseite analysieren. Natürlich können Sie das immer noch tun und eine Zeichenfolge an die Frame.Navigate()-Methode übergeben.

Aber seit UWP können Sie komplette Objekte an andere Seiten übergeben. Warum erstellen Sie also keine kleine Klasse, die all Ihre Parameter enthält und eine Instanz davon übergibt?

Ihre Klasse aussehen könnte:

public class RestaurantParams 
{ 
    public string Name { get; set; } 
    public string Text { get; set; } 
    // ... 
} 

Und dann geben sie über:

var parameters = new RestaurantParams(); 
parameters.Name = "Lorem ipsum"; 
parameters.Text = "Dolor sit amet."; 
// ... 

Frame.Navigate(typeof(PageTwo), parameters); 

Auf Ihrer nächsten Seite können Sie diese nun über Zugang:

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    base.OnNavigatedTo(e); 

    var parameters = (RestaurantParams)e.Parameter; 

    // parameters.Name 
    // parameters.Text 
    // ... 
} 

Wo Parameter ist die Funktion, die die Argumente abruft.

Hoffe, dass hilft.

+0

Vielen Dank. Es funktioniert gut für mich – hamdanjz4

+0

Ich versuchte das oben in UWP-Projekten dies gibt mir einen Fehler Ihr Parameter muss serialisierbar sein. Wenn dies nicht der Fall ist, verwenden Sie SessionState. Nicht sicher, wie das zu beheben ist. – Yosem

+0

Das bedeutet, dass die übergebenen Parameter nicht in eine Zeichenfolge im Hintergrund konvertiert werden können. Können Sie uns die Parameter zeigen, die Sie bestehen? –

Verwandte Themen