Visão geral de topologias da navegação
Esta visão geral fornece uma introdução às topologias de navegação no WPF. Em seguida, três topologias de navegação comuns, com amostras, são abordadas.
Observação
Antes de ler este tópico, você deve estar familiarizado com o conceito de navegação estruturada no WPF usando funções de página. Para obter mais informações sobre esses tópicos, consulte Visão geral da navegação estruturada.
Este tópico contém as seguintes seções:
Topologias de navegação
No WPF, a navegação normalmente consiste em páginas () com hiperlinks (PageHyperlink) que navegam para outras páginas quando clicadas. As páginas para as quais são navegadas são identificadas por URIs (identificadores uniformes de recursos) (consulte Empacotar URIs no WPF). Considere o exemplo simples a seguir que mostra páginas, hiperlinks e URIs (identificadores uniformes de recursos):
<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>
Essas páginas são organizadas em uma topologia de navegação cuja estrutura é determinada por como você pode navegar entre elas. Essa topologia de navegação em particular é adequada para cenários simples, embora a navegação possa exigir topologias mais complexas, algumas das quais só podem ser definidas quando um aplicativo está em execução.
Este tópico aborda três topologias de navegação comuns: linear fixa, hierárquica fixa e gerada dinamicamente. Cada topologia de navegação é demonstrada com um exemplo que tem uma interface do usuário como a mostrada na figura a seguir:
Topologias de navegação estruturada
Há dois tipos gerais de topologias de navegação:
Topologia fixa: é definida em tempo de compilação e não é alterada em tempo de execução. Topologias fixas são úteis para navegação em uma sequência fixa de páginas em ordem hierárquica ou ordem linear.
Topologia dinâmica: definida em tempo de execução com base em entradas coletadas do usuário, do aplicativo ou do sistema. Topologias dinâmicas são úteis quando as páginas podem ser navegadas em sequências diferentes.
Embora seja possível criar topologias de navegação utilizando páginas, as amostras usam funções de página porque dão suporte adicional que simplifica o suporte para passar e retornar dados pelas páginas de uma topologia.
Navegação em uma topologia linear fixa
Uma topologia linear fixa é semelhante à estrutura de um assistente que tem uma ou mais páginas de assistente que são navegadas em sequência fixa. A figura a seguir mostra a estrutura de alto nível e o fluxo de um assistente com uma topologia linear fixa:
Os comportamentos típicos para navegar em uma topologia linear fixa incluem o seguinte:
Navegar da página de chamada para uma página de inicializador que inicia o assistente e navega até a primeira página do assistente. Uma página inicializadora (sem interface do usuário) não é necessária, pois uma página de PageFunction<T>chamada pode chamar a primeira página do assistente diretamente. Entretanto, usar uma página de inicializador pode simplificar a inicialização do assistente, especialmente se ela for complexa.
Os usuários podem navegar entre páginas usando os botões Voltar e Avançar (ou hiperlinks).
Os usuários podem navegar entre páginas usando o diário.
Os usuários podem cancelar o assistente em qualquer página do assistente pressionando um botão Cancelar.
Os usuários podem aceitar o assistente na última página do assistente pressionando um 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, bem como 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.
Navegação dinâmica em uma topologia hierárquica fixa
Em alguns aplicativos, as páginas permitem a navegação para duas ou mais outras páginas, como mostra a figura a seguir:
Essa estrutura é conhecida como 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 a página à qual deve navegar. A figura a seguir ilustra uma das várias sequências de navegação possíveis com base na figura anterior:
Embora a sequência em que as páginas de uma estrutura hierárquica fixa são navegadas seja determinada em tempo de execução, a experiência do usuário é a mesma que a experiência do usuário para uma topologia linear fixa:
Navegar da página de chamada para uma página de inicializador que inicia o assistente e navega até a primeira página do assistente. Uma página inicializadora (sem interface do usuário) não é necessária, pois uma página de PageFunction<T>chamada pode chamar a primeira página do assistente diretamente. Entretanto, usar uma página de inicializador pode simplificar a inicialização do assistente, especialmente se ela for complexa.
Os usuários podem navegar entre páginas usando os botões Voltar e Avançar (ou hiperlinks).
Os usuários podem navegar entre páginas usando o diário.
Os usuários podem alterar a sequência de navegação se navegarem de volta pelo diário.
Os usuários podem cancelar o assistente em qualquer página do assistente pressionando um botão Cancelar.
Os usuários podem aceitar o assistente na última página do assistente pressionando um 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, bem como 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.
Navegação em uma topologia gerada dinamicamente
Em alguns aplicativos, a sequência em que 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:
A figura a seguir ilustra uma sequência de navegação que foi escolhida pelo usuário em tempo de execução:
A sequência de navegação é conhecida como uma topologia gerada dinamicamente. Para o usuário, assim como ocorre com as outras topologias de navegação, a experiência do usuário é a mesmo das topologias anteriores:
Navegar da página de chamada para uma página de inicializador que inicia o assistente e navega até a primeira página do assistente. Uma página inicializadora (sem interface do usuário) não é necessária, pois uma página de PageFunction<T>chamada pode chamar a primeira página do assistente diretamente. Entretanto, usar uma página de inicializador pode simplificar a inicialização do assistente, especialmente se ela for complexa.
Os usuários podem navegar entre páginas usando os botões Voltar e Avançar (ou hiperlinks).
Os usuários podem navegar entre páginas usando o diário.
Os usuários podem cancelar o assistente em qualquer página do assistente pressionando um botão Cancelar.
Os usuários podem aceitar o assistente na última página do assistente pressionando um 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, bem como 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.
Confira também
.NET Desktop feedback