Навигация на страницу Windows Phone 7, расположенную во внешней сборке
Очень часто в приложении Windows Phone 7 требуется разделить функциональность приложения на несколько сборок. И в этом случае часто возникают вопросы – как использовать страницу (XAML), расположенную не в основной сборке. Мне пришло несколько вопросов подобного характера в почту, отвечаю здесь всем сразу.
Навигация на страницы, расположенные в сборке самого приложения
За навигацию в Windows Phone 7 отвечает объект NavigationService
. Он содержит методы Navigate()
и GoBack()
, которые позволяют перемещаться по страницам и изменять содержимое стека навигации. Важным моментом при этом является то, что для адресации страницы используется объект Uri
(при этом все пути к страницам – относительные).
Типичный пример кода для перехода на страницу в основной сборке выглядит так:
NavigationService.Navigate(new Uri("/About.xaml", UriKind.Relative));
В данном случае методу Navigate()
передается объект Uri
, который и содержит путь до нужной страницы.
Навигация на внешние страницы
Для навигации на страницы, расположенные во внешней сборки необходимо:
- Сделать ссылку на внешнюю сбоку со страницей из основного приложения (для того, чтобы сборка была включена в результирующий пакет приложения XAP).
- При указании адреса страницы добавить указание на внешнюю сборку.
С первым пунктом все достаточно просто – нужно добавить ссылку (Add Reference
) на сборку, содержащую требуемую страницу. Для указания адреса страницы следует воспользоваться стандартным для приложений Silverlight синтаксисом и указать имя сборки:
NavigationService.Navigate(new Uri("/Project1;component/MyPage.xaml", UriKind.Relative));
Путь до страницы внутри сборки может быть вложенным:
NavigationService.Navigate(new Uri("/Project1;component/Views/Part1/Page1.xaml", UriKind.Relative));
Аналогичным образом можно делать ссылки из элемента управления HyperlinkButton
:
<HyperlinkButton NavigateUri="/Project;component/MyPage.xaml" Content="Navigate to my page"/>
Добавить комментарий