Silverlight Navigation Framework для мульти-страничных приложений
Silverlight постепенно двигается от предоставления контролов и UX к простым framework’ам для создания полноценных приложений. Я имею виду, что в Silverlight 3 появился новый framework для работы с мульти-страничными приложениями. Silverlight 3 представляет новый тип приложений “Silverlight Navigation Application”.
Этот шаблон создает в VisualStudio пакет файлов, который позволяет использовать гибкий настраиваемый framework для мульти-страничных приложений. Измененный шаблон изображен на screenshot’е. Хочу обратить внимание на то, что ссылка в браузере и заголовок изменяются при навигации по страницам.
VisualStudio создает обыкновенный “MainPage.xaml/cs”, “App.xaml/cs” и дополнительную папку “Assets”,которая содержит“Styles.xaml”, а также папку с представлениями, содержащую 3 стандартных представления:
- “Home.xaml”
- “About.xaml”
- “ErrorWindow.xaml”
Каждый содержит код позади.
Вы можете заметить, что при переходе по ссылке, обновляется внутренний контент, а не вся страница.
Frameимапингссылок
Если вдаваться в подробности, базовая структура хранится в файле “MainFrame.xaml”, который является экземпляром “System.Windows.Controls.Frame”; его можно найти в пространстве имен “System.Windows.Controls.Navigation”. Frame поддерживает навигацию между страницами и, конечно же, передачу данных между страницами.
Вы можете передавать параметры при навигации. Данный пример изображен на sceenshot’е ниже.
1: <!-- snippet from the Silverlight Documentation -->
2: <navigation:Frame.UriMapper>
3: <uriMapper:UriMapper>
4: <uriMapper:UriMapping
5: Uri="/ProductDetail/{productid}"
6: MappedUri="/Views/ProductDetail.xaml?ProductId={productid}"/>
7: <uriMapper:UriMapping
8: Uri="/{pageName}"
9: MappedUri="/Views/{pageName}.xaml"/>
10: </uriMapper:UriMapper>
11: </navigation:Frame.UriMapper>
У вас может возникнуть и другой вопрос – существует ли возможность передачи данных между страницами. Ответ – “существует, для этого можно воспользоваться DataContext”.
…
Вот такая новая фича появилась в Silverlight 3. Думаю, она вам очень поможет в разработке мульти-страничных приложений.