Навигация на страницу 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"/>
Добавить комментарий