Windows Phone 7 - 在页面之间传递值

时间:2011-08-25 17:56:03

标签: c# windows-phone-7

我正在尝试使用以下命令在页面之间发送值:

NavigationService.Navigate(new Uri("/ABC.xaml?name=" + Company + "&city=" + City , UriKind.Relative));

此处公司和城市的价值被传递到下一页,不知何故公司名称如“ABC& Ltd”未正确传递,它只是将“ABC”传递到下一页。基本上是“&”之后的部分被放弃了。

这里有格式吗?或者我应该为此写一个逻辑吗?

需要帮助!

由于

3 个答案:

答案 0 :(得分:6)

如果您发现任何查询字符串包含在Uri中被视为无效的字符,那么您正在执行的操作将失败。您需要先使用Uri.EscapeDataString来逃避任何非法字符。将您发布的代码更改为以下内容:

NavigationService.Navigate( new Uri( String.Format( "/ABC.xaml?name={0}&city={1}",
          Uri.EscapeDataString( Company ), Uri.EscapeDataString( City ) ), 
          UriKind.Relative ) );

当您使用NavigationContext.QueryString阅读转义字符串时,它们会自动未转义,因此无需明确调用Uri.UnescapeDataString

答案 1 :(得分:2)

&字符被视为查询字符串中的特殊字符,作为分隔值的方法。它需要转义为%26

有关如何使用Uri.EscapeUriString轻松转义网址的详细信息。

例如:

string Company = "ABC & D";
string City = "Falls Church";
string escaped = Uri.EscapeUriString("/ABC.xaml?name=" + Company + "&city=" + City);
var uri = new Uri(escaped, UriKind.Relative);

答案 2 :(得分:0)

您还可以将参数传递给App.xaml.cs代码,您可以在其中定义可在整个应用中访问的全局值,

http://www.developer.nokia.com/Blogs/Community/2011/08/25/passing-data-between-pages-in-windows-phone-7/