Поделиться через


Обзор топологий навигации

В этом обзоре приведены общие сведения о топологиях навигации в WPF. Далее рассматриваются три распространенных топологии навигации с примерами.

Замечание

Перед чтением этого раздела необходимо ознакомиться с понятием структурированной навигации в WPF с помощью функций страниц. Дополнительные сведения об обоих из этих разделов см. в разделе "Обзор структурированной навигации".

Этот раздел состоит из следующих подразделов.

В WPF навигация обычно состоит из страниц () с гиперссылками (PageHyperlink), которые перемещаются на другие страницы при щелчке. Страницы, к которым осуществляется переход, определяются по универсальным идентификаторам ресурсов (URI) (см. URI пакетов в WPF). Рассмотрим следующий простой пример, показывающий страницы, гиперссылки и универсальные идентификаторы ресурсов (URI):

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" WindowTitle="Page1">
  <Hyperlink NavigateUri="Page2.xaml">Navigate to Page2</Hyperlink>
</Page>
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" WindowTitle="Page2">
  <Hyperlink NavigateUri="Page1.xaml">Navigate to Page1</Hyperlink>
</Page>

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

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

Страницы задач с элементами данных и кнопками навигации.

Структурированные топологии навигации

Существует два широких типа топологий навигации:

  • Исправлена топология: определена во время компиляции и не изменяется во время выполнения. Фиксированные топологии полезны для навигации по фиксированной последовательности страниц в линейном или иерархическом порядке.

  • Динамическая топология: определяется во время выполнения на основе входных данных, собранных пользователем, приложением или системой. Динамические топологии полезны, если страницы можно перемещать в разных последовательностях.

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

Фиксированная линейная топология аналогична структуре мастера с одной или несколькими страницами мастера, которые перемещаются в фиксированной последовательности. На следующем рисунке показана высокоуровневая структура и поток мастера с фиксированной линейной топологией:

Схема, на которой показана фиксированная линейная топология.

Типичные характеристики навигации по фиксированной линейной топологии включают в себя следующее:

  • Переход с вызывающей страницы на страницу запуска, которая инициализирует мастер и ведет на первую страницу мастера. Страница запуска (без PageFunction<T>пользовательского интерфейса) не требуется, так как вызывающая страница может напрямую вызывать первую страницу мастера. Однако использование стартовой страницы может упростить инициализацию мастера, особенно если она сложная.

  • Пользователи могут перемещаться между страницами с помощью кнопок Назад и Вперёд (или гиперссылок).

  • Пользователи могут перемещаться между страницами с помощью журнала.

  • Пользователи могут отменить мастер настройки на любой странице мастера, нажав кнопку "Отмена".

  • Пользователи могут принять мастер на последней странице мастера, нажав кнопку "Готово".

  • Если мастер отменен, мастер возвращает соответствующий результат и не возвращает данные.

  • Если пользователь принимает мастер настройки, мастер возвращает соответствующий результат и собранные данные.

  • После завершения работы мастера (принятия или отмены), страницы, входящие в состав мастера, удаляются из журнала. Это позволяет изолировать каждый экземпляр мастера, избегая тем самым возможных аномалий данных или состояния.

Динамическая навигация по фиксированной иерархической топологии

В некоторых приложениях страницы позволяют переходить к двум или более другим страницам, как показано на следующем рисунке:

Схема, на которой показана страница, которая может переходить к нескольким страницам.

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

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

Несмотря на то, что последовательность навигации страниц в фиксированной иерархической структуре определяется во время выполнения, взаимодействие с пользователем совпадает с пользовательским интерфейсом для фиксированной линейной топологии:

  • Переход с вызывающей страницы на страницу запуска, которая инициализирует мастер и ведет на первую страницу мастера. Страница запуска (без PageFunction<T>пользовательского интерфейса) не требуется, так как вызывающая страница может напрямую вызывать первую страницу мастера. Однако использование стартовой страницы может упростить инициализацию мастера, особенно если она сложная.

  • Пользователи могут перемещаться между страницами с помощью кнопок Назад и Вперёд (или гиперссылок).

  • Пользователи могут перемещаться между страницами с помощью журнала.

  • Пользователи могут изменить последовательность навигации, если они переходят обратно через журнал.

  • Пользователи могут отменить мастер настройки на любой странице мастера, нажав кнопку "Отмена".

  • Пользователи могут принять мастер на последней странице мастера, нажав кнопку "Готово".

  • Если мастер отменен, мастер возвращает соответствующий результат и не возвращает данные.

  • Если пользователь принимает мастер настройки, мастер возвращает соответствующий результат и собранные данные.

  • После завершения работы мастера (принятия или отмены), страницы, входящие в состав мастера, удаляются из журнала. Это позволяет изолировать каждый экземпляр мастера, избегая тем самым возможных аномалий данных или состояния.

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

Набор страниц с неопределенной последовательностью навигации.

На следующем рисунке показана последовательность навигации, выбранная пользователем во время выполнения:

Схема, показывающая последовательность навигации, выбранная во время выполнения.

Последовательность навигации называется динамической топологией. Для пользователя, как и в других топологиях навигации, взаимодействие с пользователем совпадает с предыдущими топологиями:

  • Переход с вызывающей страницы на страницу запуска, которая инициализирует мастер и ведет на первую страницу мастера. Страница запуска (без PageFunction<T>пользовательского интерфейса) не требуется, так как вызывающая страница может напрямую вызывать первую страницу мастера. Однако использование стартовой страницы может упростить инициализацию мастера, особенно если она сложная.

  • Пользователи могут перемещаться между страницами с помощью кнопок Назад и Вперёд (или гиперссылок).

  • Пользователи могут перемещаться между страницами с помощью журнала.

  • Пользователи могут отменить мастер настройки на любой странице мастера, нажав кнопку "Отмена".

  • Пользователи могут принять мастер на последней странице мастера, нажав кнопку "Готово".

  • Если мастер отменен, мастер возвращает соответствующий результат и не возвращает данные.

  • Если пользователь принимает мастер настройки, мастер возвращает соответствующий результат и собранные данные.

  • После завершения работы мастера (принятия или отмены), страницы, входящие в состав мастера, удаляются из журнала. Это позволяет изолировать каждый экземпляр мастера, избегая тем самым возможных аномалий данных или состояния.

См. также