Опубликован: 22.12.2012 | Доступ: свободный | Студентов: 415 / 14 | Длительность: 07:20:00
Лекция 10:

Разработка и реализация приложения для Windows Store

< Лекция 9 || Лекция 10: 123 || Лекция 11 >
Аннотация: В лекции приводятся основные подходы к реализации приложений для Windows Store. Рассмотрена иерархическая система навигации. Представлена структура навигации между разделами в приложении. Рассматривается навигация жестом. Приведены назначение панелей навигации и приложения.
Ключевые слова: Windows, store, узловой

Приложения для Windows Store поддерживают несколько типов навигации:

  • иерархическая система
  • плоская система

Рис. 9.1.

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

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


Рис. 9.2.

Суть узловой навигации - в распределении содержимого по различным разделам и по степени развернутости.

Страницы узлов

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

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

Страницы разделов

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

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

Страницы сведений

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

Страница сведений содержит сведения об элементе или функцию. Страницы сведений могут содержать множество сведений или отдельный объект, например изображение или видеоролик.

Во многих приложениях для Windows Store используется плоская система навигации. Такая структура распространена в играх, браузерах и офисных приложениях, где пользователь переходит между страницами, вкладками или режимами, которые находятся на одном и том же иерархическом уровне.


Рис. 9.3.

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

Суть плоской системы заключается в распределении содержимого по различным страницам.

Реализация навигации

Давайте посмотрим, как приложение в Windows 8 способно отобразить контент. Речь идет именно о контенте, так как разработка приложений для Windows Store базируется на отсутствии оболочки у окна. Тем не менее, окно в приложении присутствует, оно создается неявно, но на него можно получить ссылку, используя свойство Current класса Window. Получив ссылку на окно приложения, разработчик может установить свойство Content, которое будет определять содержимое окна. Когда же содержимое полностью сформировано, его можно отобразить с помощью метода Activate. Иными словами, если в Вашем приложении предусмотрен переход на другие страницы, то этого можно достичь, установив свойство Content в ссылку на страницу и вызвав Activate. В сентябрьской версии Windows 8 (Platform Preview) нечто подобное было реализовано. Проблема лишь в том, что данный механизм не позволяет сохранять историю переходов, не поддерживает хорошего способа передачи параметров и т.д. Поэтому для организации навигации правильно использовать специальный контейнер Frame, который предназначен для поддержки контекста навигации.

Заглянем внутрь файла App.xaml.cs.

protected override void OnLaunched(LaunchActivatedEventArgs args)
{
 var rootFrame = new Frame();
 rootFrame.Navigate(typeof(BlankPage));
 Window.Current.Content = rootFrame;
 Window.Current.Activate();
} 

Как видите, при запуске приложения создается объект типа Frame, который устанавливается в свойство Content. С помощью метода Navigate объект типа Frame загружает страницу BlankPage (имя страницы по умолчанию), что позволяет отобразить ее после вызова метода окна Activate. Таким образом, Frame является тем классом, который обеспечивает контекст навигации, и дает доступ к ряду методов и свойств, связанных с навигацией:

  • CacheSize - указывает количество страниц, сохраняемых в кэше при "глубокой" навигации;
  • CanGoBack - определяет, возможно ли осуществить навигацию на предыдущую страницу (была ли и есть ли страница в кэше);
  • CanGoForward - определяет, можно ли совершить навигацию на страницу, которую пользователь уже посещал и с которой вернулся на предыдущую;
  • GoBack - выполняет навигацию на предыдущую страницу;
  • GoForward - выполняет навигацию на следующую страницу;
  • Navigated - событие, генерируемое после успешной навигации;
  • Navigating - событие, которое генерируется перед попыткой навигации;
  • NavigationFailed - событие, которое возникает, если во время навигации произошла ошибка (например, страница отсутствует);
  • NavigationStopped - событие, которое генерируется в тот момент, когда текущая навигация была прервана с помощью метода StopLoading или путем выполнения другой навигации;
  • StopLoading - завершает загрузку данных и прекращает навигацию на указанную страницу;
  • Navigate - самый важный метод, который позволяет выполнять навигацию на указанную страницу.

Перечисленные методы достаточно просты, поэтому реализация навигации не составляет труда. Если говорить об использовании этих методов в сгенерированном коде, рекомендуется обратиться к файлу LayoutAwarePage.cs, который генерируется при создании любого проекта.

protected virtual void GoHome(object sender, RoutedEventArgs e)
{
 if (this.Frame != null)
 {
 while (this.Frame.CanGoBack) this.Frame.GoBack();
 }
}

Тут описан обработчик события, которое возникает при нажатии кнопки Home на панели приложения. Как Вы видите, для перехода на основную страницу совершена попытка вернуться на главную вследствие пролистывания всех страниц в обратном порядке. При этом объект типа Frame можно получить через одноименное свойство объекта Page, а потом осуществлять навигацию.

При разработке приложений необходимо учитывать особенности среды, в которой будет происходить взаимодействие пользователя с приложением и по возможности максимально интегрировать свой продукт с платформой. Это поможет создать ощущение, что продукт является неотъемлемой частью платформы, для которой вы его разрабатываете.

Создавая приложения для Windows 8, возможно использовать различные уведомления (Tile, Toast), интеграцию с поиском, делиться информацией со своими друзьями через социальные сервисы и удобно настраивать приложения под свои нужды. В этой главе мы рассмотрим возможности интеграции наших приложений с Windows 8.

< Лекция 9 || Лекция 10: 123 || Лекция 11 >
Максим Иванов
Максим Иванов
а, ВЭГУ
Василий Вячин
Василий Вячин
Россия, Москва, НПО Информ-Система, Специалист-разработчик