Compartilhar via


Visão geral sobre topologias de navegação

Esta visão geral fornece uma introdução a topologias de navegação no WPF. Três topologias comuns de navegação, com exemplos, serão abordadas posteriormente.

ObservaçãoObservação:

Antes de ler este tópico, você deve estar familiarizado com o conceito de navegação estruturado em WPF usando funções de página. Para obter mais informações sobre ambos esses tópicos, consulte Visão Geral de Navegação Estruturada.

Este tópico contém as seguintes seções.

  • Topologias de navegação
  • Topologias de navegação estruturada
  • Navegação em uma topologia linear fixa
  • Navegação dinâmica em uma topologia hierárquica fixa
  • Navegação em uma topologia gerada dinamicamente
  • Tópicos relacionados

Topologias de navegação

Em WPF, a navegação normalmente consiste de páginas (Page) com hiperlinks (Hyperlink) que navegam para outras páginas quando clicados. Páginas que são alcançadas por navegação são identificadas por uniform resource identifiers (URIs) (consulte URIs de Pacotes no Windows Presentation Foundation). Considere o seguinte exemplo simples que exibe páginas, hiperlinks e uniform resource identifiers (URIs):

<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>

Essas páginas são organizadas em uma topologia de navegação cuja estrutura é determinada por como você pode navegar entre as páginas. Essa topologia de navegação em particular é adequada em cenários simples, embora a navegação possa exigir topologias mais complexas, algumas das quais só podem ser definidas quando um aplicativo está sendo executado.

Este tópico aborda três topologias comuns de navegação: fixo linear, fixo hierárquica, and gerado dinamicamente. Cada topologia de navegação é demonstrada com um exemplo que tem uma UI como aquela que é mostrada na figura a seguir:

Páginas de tarefas com itens de dados

Topologias de navegação estruturada

Há dois tipos amplos de topologias de navegação:

  • Topologia fixa: definido em time de compilar e não é alterado em time de execução. Topologias fixas são úteis para navegação através de uma sequência fixa de páginas em ordem hierárquica ou linear.

  • Topologia dinâmica: definido em time de execução com base na entrada que é coletada do usuário, aplicativo ou o sistema. Topologias dinâmicas são úteis quando páginas podem ser navegadas em sequências diferentes.

Embora seja possível criar topologias de navegação utilizando páginas, os exemplos usam funções de página, pois elas fornecem suporte adicional que simplifica transmissão e retorno de dados através das páginas de uma topologia.

Uma topologia linear fixa é parecida com a estrutura de um assistente que tem uma ou mais páginas que são navegadas em uma sequência fixa. A figura a seguir mostra a estrutura e fluxo de alto nível de um assistente com uma topologia linear fixa.

Diagrama de topologia de navegação

Os comportamentos típicos para navegar em uma topologia linear fixa incluem o seguinte:

  • Navegação da página de chamada para uma página iniciadora que inicializa o assistente e navega para a primeira página do assistente. Uma página iniciadora (uma PageFunction<T> sem UI) não é necessária, já que uma página de chamada pode chamar diretamente a primeira página do assistente. Usar uma página iniciadora, no entanto, pode simplificar a inicialização do assistente, especialmente se a inicialização é complexa.

  • Os usuários podem navegar entre páginas usando os botões voltar e avançar (ou hyperlinks).

  • Os usuários podem navegar entre páginas usando o diário.

  • Os usuários podem cancelar o assistente a partir de qualquer página do assistente pressionando um botão 'Cancelar'.

  • Os usuários podem aceitar o assistente na última página do assistente, pressionando o botão 'Concluir'.

  • Se um assistente for cancelado, o assistente retornará um resultado apropriado e não retornará dados.

  • Se um usuário aceitar um assistente, o assistente retornará um resultado apropriado e retornará os dados coletados.

  • Quando o assistente for concluído (aceito ou cancelado), as páginas que compreendem o assistente serão removidas do diário. Isso mantém cada instância do assistente isolada, evitando assim potenciais anomalias de dados ou de estado.

Consulte Navegação sobre um exemplo de topologia linear fixo para um exemplo.

Em alguns aplicativos, as páginas permitem a navegação para duas ou mais outras páginas, como mostrado na figura a seguir.

Página que pode navegar para várias páginas

Essa estrutura é conhecida como uma topologia hierárquica fixa, e a sequência na qual a hierarquia é atravessada geralmente é determinada em tempo de execução pelo aplicativo ou pelo usuário. Em tempo de execução, cada página na hierarquia que permite a navegação para duas ou mais outras páginas reúne os dados necessários para determinar para qual página navegar. A figura a seguir ilustra uma das várias sequências de navegação possíveis baseando-se na figura anterior.

Diagrama de topologia de navegação

Mesmo que a sequência na qual as páginas são navegadas em uma estrutura hierárquica fixa seja determinada em tempo de execução, a experiência do usuário é igual a experiência do usuário em uma topologia linear fixa:

  • Navegação da página de chamada para uma página iniciadora que inicializa o assistente e navega para a primeira página do assistente. Uma página iniciadora (uma PageFunction<T> sem UI) não é necessária, já que uma página de chamada pode chamar diretamente a primeira página do assistente. Usar uma página iniciadora, no entanto, pode simplificar a inicialização do assistente, especialmente se a inicialização é complexa.

  • Os usuários podem navegar entre páginas usando os botões voltar e avançar (ou hyperlinks).

  • Os usuários podem navegar entre páginas usando o diário.

  • Os usuários podem alterar a sequência de navegação se eles navegarem de volta através do diário.

  • Os usuários podem cancelar o assistente a partir de qualquer página do assistente pressionando um botão 'Cancelar'.

  • Os usuários podem aceitar o assistente na última página do assistente, pressionando o botão 'Concluir'.

  • Se um assistente for cancelado, o assistente retornará um resultado apropriado e não retornará dados.

  • Se um usuário aceitar um assistente, o assistente retornará um resultado apropriado e retornará os dados coletados.

  • Quando o assistente for concluído (aceito ou cancelado), as páginas que compreendem o assistente serão removidas do diário. Isso mantém cada instância do assistente isolada, evitando assim potenciais anomalias de dados ou de estado.

Consulte Navegação dinâmica sobre um exemplo de topologia hierárquicos fixo para um exemplo.

Em alguns aplicativos, a sequência na qual duas ou mais páginas são navegadas só pode ser determinada em tempo de execução, seja pelo usuário, pelo aplicativo ou por dados externos. A figura a seguir ilustra um conjunto de páginas com uma sequência de navegação indeterminada.

Diagrama de topologia de navegação

A figura seguinte ilustra uma sequência de navegação que foi escolhida pelo usuário em tempo de execução.

Diagrama de navegação

A sequência de navegação é conhecida como uma topologia gerada dinamicamente. Para o usuário, como com as outras topologias de navegação, a experiência do usuário é a mesma que para as topologias anteriores:

  • Navegação da página de chamada para uma página iniciadora que inicializa o assistente e navega para a primeira página do assistente. Uma página iniciadora (uma PageFunction<T> sem UI) não é necessária, já que uma página de chamada pode chamar diretamente a primeira página do assistente. Usar uma página iniciadora, no entanto, pode simplificar a inicialização do assistente, especialmente se a inicialização é complexa.

  • Os usuários podem navegar entre páginas usando os botões voltar e avançar (ou hyperlinks).

  • Os usuários podem navegar entre páginas usando o diário.

  • Os usuários podem cancelar o assistente a partir de qualquer página do assistente pressionando um botão 'Cancelar'.

  • Os usuários podem aceitar o assistente na última página do assistente, pressionando o botão 'Concluir'.

  • Se um assistente for cancelado, o assistente retornará um resultado apropriado e não retornará dados.

  • Se um usuário aceitar um assistente, o assistente retornará um resultado apropriado e retornará os dados coletados.

  • Quando o assistente for concluído (aceito ou cancelado), as páginas que compreendem o assistente serão removidas do diário. Isso mantém cada instância do assistente isolada, evitando assim potenciais anomalias de dados ou de estado.

Consulte Navegação sobre um exemplo de topologia gerada dinamicamente para um exemplo.

Consulte também

Conceitos

Visão Geral de Navegação Estruturada

Referência

Page

PageFunction<T>

NavigationService