2013-12-19 4 views
0

Я пытаюсь передать массив с page1.xaml на страницу2.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)); 

Как я могу получить значения этого массива в page2?

+0

Используя свой метод, вы можете запрашивать только строковые параметры. Вот что вы искали: http://stackoverflow.com/a/14009001/1950812 – fillobotto

ответ

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

к сведению, что вы создаете Ури без '='. уточните пожалуйста.

также, пожалуйста, проверьте этот вопрос, хорошо объясняется здесь:

How to pass values (parameters) between XAML pages?

EDIT: выше предложение не может работать ни на что, кроме строк, пожалуйста, обратите внимание на подробное решение

Passing a complex object to a page while navigating in a WP7 Silverlight application

3

Передача параметров URL через навигации используется только для нескольких вещей:

Это замечательно для живой плитки или для указания состояния приложения и так далее.

Если у вас более сложные данные, передаваемые между страницами, особенно если страница с переданными данными не является целью навигации, вы определенно не должны ее передавать.

(Если вы ДОЛЖЕН, вы можете кодировать его как JSON, а затем urlencode, но этого не делать).

Используйте сервис или шаблон хранилища для такой вещи.

я бы:

  • Определить услугу в своем классе файл для управления данными этой коллекции.
  • В App.xaml.cs создайте сервис и передайте его с помощью DI на страницы.
  • Выполнение запросов к службе на обеих страницах с использованием более простого способа сохранения.
+0

спасибо benjamin. Я попробую это –

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('-'); 
1

Вместо передачи массива в качестве запроса string.Use Глобального статического класса для сохранения значений. И просто используйте объект этого класса в другом месте. И создайте новый объект класса всякий раз, когда задача будет выполнена.

Смежные вопросы