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


Общие сведения о топологии переходов

Обновлен: Ноябрь 2007

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

Aa970446.alert_note(ru-ru,VS.90).gifПримечание.

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

В этом разделе содержатся следующие подразделы.

  • Топологии переходов
  • Структурные топологии переходов
  • Переход при фиксированной линейной топологии
  • Динамический переход при фиксированной иерархической топологии
  • Переход при динамически создаваемой топологии
  • Связанные разделы

Топологии переходов

В WPF переход обычно состоит из страниц (Page) с гиперссылками (Hyperlink), которые позволяют по щелчку осуществлять переходы на другие страницы. Просмотренные страницы помечаются как URI (uniform resource identifiers — универсальные коды ресурса) (см.: URI типа "pack" в Windows Presentation Foundation). Рассмотрим следующий простой пример, отображающий страницы, гиперссылки и URI (uniform resource identifiers — универсальные коды ресурса):

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

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

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

Страницы задач с элементами данных

Структурные топологии переходов

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

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

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

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

Переход при фиксированной линейной топологии

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

Схема топологии перехода

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

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

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

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

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

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

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

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

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

Пример см. в разделе Пример перехода по фиксированной линейной топологии.

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

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

Страница, которая может осуществлять переход на несколько страниц

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

Схема топологии перехода

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

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

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

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

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

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

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

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

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

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

Пример см. в разделе Пример динамического перехода по фиксированной иерархической топологии.

Переход при динамически создаваемой топологии

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

Схема топологии перехода

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

Схема перехода

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

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

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

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

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

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

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

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

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

Пример см. в разделе Пример перехода по динамически созданной топологии.

См. также

Основные понятия

Общие сведения о структурной навигации

Ссылки

Page

PageFunction<T>

NavigationService