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

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

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

这里公司和城市的价值被传递到下一页,不知何故公司名称如“ABC&Ltd”没有正确传递,它只是将“ABC”传递到下一页。 基本上“&”之后的部分被删除。

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

需要帮助 !

谢谢

如果您的任何查询字符串包含在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

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

有关如何使用Uri.EscapeUriString轻松转义URL的更多信息。

例如:

 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); 

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

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