我正在尝试将一个数组从page1.xaml传递到page2.xaml。
int[] array = new int[] { 2,4,6,8,10,12,14,15,17,19,21,23,25,27,28,30,32,34,36,38,40,42,43,45,47,49,51,53,55,56,58,60,62,64,66,68,70,71,73,75,77,79,81,83,84,86,88,90,92,94,96,98,99
};
NavigationService.Navigate(new Uri("/Page2.xaml?Parameter" + array, UriKind.Relative));
如何在第2页中获取此数组值?
答案 0 :(得分:3)
通过导航传递网址参数仅适用于少数几项:
对于实时图块或指示应用程序的状态等非常有用。
如果您在页面之间传递更复杂的数据,特别是如果传递了该数据的页面不是导航目标 - 您绝对不应该这样传递它。
(如果您必须,您可以将其编码为JSON,然后对其进行urlencode,但不要。)
使用服务或存储库模式进行此类操作。
我:
App.xaml.cs
中,创建服务并将DI传递给页面。答案 1 :(得分:3)
int[] array = new int[] { 2,4,6,8,10,12,14,15,17,19,21,23,25,27,28,30,32,34,36,38,40,42,43,45,47,49,51,53,55,56,58,60,62,64,66,68,70,71,73,75,77,79,81,83,84,86,88,90,92,94,96,98,99
};
you could use join function like this
string str= string.Join("-", array.ToArray());
NavigationService.Navigate(new Uri("/Page2.xaml?Parameter="+str, UriKind.Relative));
And in destination page get this passed query string using split function like this
str.Split('-');
答案 2 :(得分:1)
而不是将数组作为查询字符串传递。使用Global静态类来保存值。 只需在另一个位置使用该类的对象。并在任务完成时创建该类的新对象。
答案 3 :(得分:0)
你可以试试这个
page.NavigationService.Navigate(new Uri("/Page2.xaml?Parameter="+array, UriKind.Relative));
目标网页:
string parameter = string.Empty;
if (NavigationContext.QueryString.TryGetValue("parameter", out parameter)) {
this.label.Text = parameter;
}
请注意,您正在创建没有'='的uri。请更正。
也请检查这个问题,这里有很好的解释:
How to pass values (parameters) between XAML pages?
编辑:上述建议可能不适用于除字符串以外的任何内容,请查看详细解决方案Passing a complex object to a page while navigating in a WP7 Silverlight application