Как перейти на страницу внутри другой библиотеки классов в Windows Phone 7? - PullRequest
0 голосов
/ 31 января 2012

Есть набор общих страниц, которые я хочу использовать в нескольких проектах.Следовательно, я хочу создать библиотеку классов с этими страницами.Проблема в том, что я не могу передать объекты с помощью NavigationService.Navigate (новый Uri ("/ Common; component / SomeName.xaml", UriKind.Relative));метод.

Я знаю, что могу передать строку запроса.Я хотел бы знать, что ...

  1. Есть ли ограничение на число строк, которые вы можете передать в строке запроса?
  2. Есть ли ограничение на длину строки запроса?

Или, что еще лучше,

Есть ли лучший способ передачи объектов из приложения на страницы внутри другой библиотеки классов?

Ответы [ 2 ]

1 голос
/ 31 января 2012

По поводу вопроса "есть ли лучший путь". В дополнение к решению, которое вы упомянули, некоторые люди любят использовать состояние приложения для передачи параметров между объектами. Например:

PhoneApplicationService.Current.State["parameter"] = param;
var parameter = PhoneApplicationService.Current.State["parameter"];

Другой вариант - использовать общий класс. Со сложными объектами мне часто проще всего использовать статический открытый член в классе, к которому можно получить доступ из обоих проектов.

Обратите внимание, что если вы решите использовать навигацию по строке запроса, некоторые специальные символы в строке запроса могут вызвать проблемы. Если вы не можете контролировать содержимое данных, которые передаются между страницами, решение с общим классом, вероятно, лучше для вас. Например, в одном из наших приложений мы передаем имя веб-сайта в строке запроса. Бывают ситуации, когда эти имена могут содержать символ «&» (например, H & M), и если это так, строка запроса будет разбита.

При навигации, если сборка строк запроса становится громоздкой, вы можете проверить Caliburn.Micro и класс Uribuilder в нем. Это позволяет вам перемещаться с довольно хорошим (и беглым) синтаксисом:

navigation.UriFor<CandidateDetailsPageViewModel>()
     .WithParam(x => x.CandidateId, candidate.Id)                
     .Navigate();

После навигации метод TryGetValue может быть весьма полезен при разборе параметров:

String parameter;
NavigationContext.QueryString.TryGetValue("Parameter", out parameter)

Дополнительные сведения о NavigationContext.QueryString доступны из MSDN.

0 голосов
/ 31 января 2012

Чтобы ответить на ваши вопросы:

  1. Нет ограничений на число строк, которые вы можете передать в строке qyeryst, не существует.
  2. Я полагаю, что ответ на этот вопрос может быть да. Я считаю, что стандарт должен иметь URL <2000 символов </li>

Для небольших предметов я обычно просто передаю строку запроса на мои страницы. Для более сложных случаев у меня есть общий статический класс Domain, на который ссылаются обе библиотеки. Тогда я могу просто легко получить статическую доступ к этой переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...