Перейдите на страницу XAML в другой сборке в Windows Phone 7 - PullRequest
12 голосов
/ 13 февраля 2011

У меня есть страница XAML в отдельной библиотеке классов Windows Phone.Библиотека включена в мое решение VS и на нее ссылаются из моего проекта приложения.Допустим, страница называется TestPage.xaml и находится в корневой папке моей библиотеки с именем SharedPages .

. Я хочу перейти на эту страницу в моемприложение с помощью NavigationService.Я нашел этот пост , который предлагает использовать этот формат URI:

/{assemblyName};component/{pathToResource}

Так что я пытаюсь что-то вроде этого:

NavigationService.Navigate(new Uri("/SharedPages;component/TestPage.xaml"));

Когда я запускаю это, я получаюследующее исключение:

Навигация поддерживается только для относительных URI, которые являются фрагментами или начинаются с '/' или содержат '; component /'. 1018 *

Чтоя делаю не так?

Спасибо.

Ответы [ 2 ]

18 голосов
/ 13 февраля 2011

Похоже, URI должен быть создан как относительный URI.Это работает:

NavigationService.Navigate(new Uri("/SharedPages;component/TestPage.xaml", UriKind.Relative));
4 голосов
/ 20 июня 2011

Эй, я не думаю, что это ваш случай, но хорошо бы просмотреть сгенерированное имя сборки.

Вариант 1) Неверное имя сборки

Следующий формат:

/{assemblyName};component/{pathToResource}

Имя сборки можно проверить в свойствах вкладкипроект.Я помню парня, который переименовал проект, но не сборку, и это было причиной из-за сбоя навигации.

Вариант 2)

Разделитель точек в вашемНазвание сборки.

Я не знаю реальной причины этого, но я потратил некоторое время, чтобы найти ее.Название сборки не должно содержать точку в качестве разделителя.Я думаю, что анализ Uri будет неправильно Uri.Например, у меня была сборка под названием «Com.Hmb.Prax», и я получил следующее исключение:

Navigation is only supported to relative URIs that are fragments, or begin with '/', or which contain ';component/'.
Parameter name: uri

Как только я переименовал мою dll в «ComHmbPrax», она работала хорошо.Herber

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