Eri*_*rik 8 c# parameter-passing windows-phone windows-phone-8
我需要通过在Windows Phone的两页8.我一直在寻找周围之间的一个简单的字符串,试图找到这样做的最好办法 - 但我想的那些被证明行不通,因为他们应该 - 所以我问你:在Windows Phone 8中两个页面之间传递简单字符串的最佳方法是什么.这是我用于导航到另一个页面的方法:
NavigationService.Navigate(new Uri("/newpage.xaml", Urikind.Relative));
Run Code Online (Sandbox Code Playgroud)
McG*_*gle 19
对于字符串变量,最简单的方法是使用查询字符串参数:
NavigationService.Navigate(new Uri("/newpage.xaml?key=value", Urikind.Relative));
Run Code Online (Sandbox Code Playgroud)
使用NavigationContext.QueryString以下命令在目标页面上选择:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (NavigationContext.QueryString.ContainsKey("key"))
{
string val = NavigationContext.QueryString["key"];
// etc ...
}
}
Run Code Online (Sandbox Code Playgroud)
注意:如果您的字符串仅包含字母数字字符,则上述内容无需修改即可使用.但是,如果您的字符串可能包含URL保留字符(例如&,?),那么您必须对它们进行URL编码.使用辅助方法Uri.EscapeDataString并Uri.UnescapeDataString为此.
逃离:
string encodedValue = Uri.EscapeDataString("R&R");
NavigationService.Navigate(new Uri("/newpage.xaml?key=" + encodedValue, Urikind.Relative));
Run Code Online (Sandbox Code Playgroud)
为了unescape:
string encodedValue = NavigationContext.QueryString["key"];
string val = Uri.UnescapeDataString(encodedValue);
Run Code Online (Sandbox Code Playgroud)
我不得不说,对于简单的数据,@ McGarnagle可能是一个更好的解决方案.
也就是说,这也是一种极其快速和肮脏的方式.此方法也可以采用复杂对象.
我喜欢用PhoneApplicationService.State哪个是Dictionary<String,Object>
PhoneApplicationService.State.add("KeyName",YourObject);
Run Code Online (Sandbox Code Playgroud)
然后在第二页中你这样做
var yourObject = PhoneApplicationService.State["KeyName"];
Run Code Online (Sandbox Code Playgroud)