Passing a string between pages in Windows Phone 8

前端 未结 5 1898
自闭症患者
自闭症患者 2020-12-16 04:53

I need to pass a simple string between two pages in Windows Phone 8. I\'ve been searching around, trying to find the best way of doing it - but the ones i tried turned out t

5条回答
  •  孤街浪徒
    2020-12-16 05:23

    For a string variable, it's easiest to use a query string parameter:

    NavigationService.Navigate(new Uri("/newpage.xaml?key=value", Urikind.Relative));
    

    Pick it up on the target page using NavigationContext.QueryString:

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        if (NavigationContext.QueryString.ContainsKey("key"))
        {
             string val = NavigationContext.QueryString["key"];
             // etc ...
        }
    }
    

    Note: if your string contains only alphanumeric characters, then the above will work without modification. But, if your string might have URL-reserved characters (eg, &, ?), then you'll have to URL-encode them. Use the helper methods Uri.EscapeDataString and Uri.UnescapeDataString for this.

    To escape:

    string encodedValue = Uri.EscapeDataString("R&R");
    NavigationService.Navigate(new Uri("/newpage.xaml?key=" + encodedValue, Urikind.Relative));
    

    To unescape:

    string encodedValue = NavigationContext.QueryString["key"];
    string val = Uri.UnescapeDataString(encodedValue);
    

提交回复
热议问题