Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Essa visão geral fornece uma introdução às topologias de navegação no WPF. Três topologias de navegação comuns, com exemplos, são discutidas posteriormente.
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 dois 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 (Page) com hiperlinks (Hyperlink) que navegam até outras páginas quando clicadas. As páginas para as quais são navegadas são identificadas por URIs (identificadores de recursos uniformes) (consulte URIs do Pacote no WPF). Considere o exemplo simples a seguir que mostra páginas, hiperlinks e URIs (identificadores de recursos uniformes):
<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 as páginas. Essa topologia de navegação específica é 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á 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 amplos 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 por meio de uma sequência fixa de páginas em uma ordem linear ou hierárquica.
Topologia dinâmica: definida em tempo de execução com base na entrada coletada 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 usando páginas, os exemplos usam funções de página porque fornecem suporte adicional que simplifica o suporte para passar e retornar dados por meio das páginas de uma topologia.
Navegação em uma topologia linear fixa
Uma topologia linear fixa é análoga à estrutura de um assistente que tem uma ou mais páginas de assistente navegadas em uma 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 por uma topologia linear fixa incluem o seguinte:
Navegando da página de chamada para uma página inicializador que inicializa o assistente e navega até a primeira página do assistente. Uma página do inicializador (sem PageFunction<T>interface do usuário) não é necessária, pois uma página de chamada pode chamar a primeira página do assistente diretamente. No entanto, o uso de uma página inicializador pode simplificar a inicialização do assistente, especialmente se a inicialização for complexa.
Os usuários podem navegar entre páginas usando botões Voltar e Encaminhar (ou hiperlinks).
Os usuários podem navegar entre páginas usando o diário.
Os usuários podem cancelar o assistente de qualquer página do assistente utilizando o botão Cancelar.
Na última página do assistente, os usuários podem aceitar o assistente pressionando um botão Concluir.
Se um assistente for cancelado, o assistente retornará um resultado apropriado e não retornará nenhum dado.
Se um usuário aceitar um assistente, o assistente retornará um resultado apropriado e retornará os dados coletados.
Quando o assistente é concluído (aceito ou cancelado), as páginas que o assistente compreende são removidas do diário. Isso mantém cada instância do assistente isolada, evitando possíveis dados ou anomalias 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, conforme mostrado na figura a seguir:
Essa estrutura é conhecida como uma topologia hierárquica fixa e a sequência na qual a hierarquia é percorrida 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 coleta 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 com base na figura anterior:
Embora a sequência na qual as páginas em uma estrutura hierárquica fixa sejam navegadas seja determinada em tempo de execução, a experiência do usuário é a mesma da experiência do usuário para uma topologia linear fixa:
Navegando da página de chamada para uma página inicializador que inicializa o assistente e navega até a primeira página do assistente. Uma página do inicializador (sem PageFunction<T>interface do usuário) não é necessária, pois uma página de chamada pode chamar a primeira página do assistente diretamente. No entanto, o uso de uma página inicializador pode simplificar a inicialização do assistente, especialmente se a inicialização for complexa.
Os usuários podem navegar entre páginas usando botões Voltar e Encaminhar (ou hiperlinks).
Os usuários podem navegar entre páginas usando o diário.
Os usuários poderão alterar a sequência de navegação se navegarem de volta pelo diário.
Os usuários podem cancelar o assistente de qualquer página do assistente utilizando o botão Cancelar.
Na última página do assistente, os usuários podem aceitar o assistente pressionando um botão Concluir.
Se um assistente for cancelado, o assistente retornará um resultado apropriado e não retornará nenhum dado.
Se um usuário aceitar um assistente, o assistente retornará um resultado apropriado e retornará os dados coletados.
Quando o assistente é concluído (aceito ou cancelado), as páginas que o assistente compreende são removidas do diário. Isso mantém cada instância do assistente isolada, evitando possíveis dados ou anomalias de estado.
Navegação em uma topologia gerada dinamicamente
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 pelos dados externos. A figura a seguir ilustra um conjunto de páginas com uma sequência de navegação indeterminado:
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, como nas outras topologias de navegação, a experiência do usuário é a mesma das topologias anteriores:
Navegando da página de chamada para uma página inicializador que inicializa o assistente e navega até a primeira página do assistente. Uma página do inicializador (sem PageFunction<T>interface do usuário) não é necessária, pois uma página de chamada pode chamar a primeira página do assistente diretamente. No entanto, o uso de uma página inicializador pode simplificar a inicialização do assistente, especialmente se a inicialização for complexa.
Os usuários podem navegar entre páginas usando botões Voltar e Encaminhar (ou hiperlinks).
Os usuários podem navegar entre páginas usando o diário.
Os usuários podem cancelar o assistente de qualquer página do assistente utilizando o botão Cancelar.
Na última página do assistente, os usuários podem aceitar o assistente pressionando um botão Concluir.
Se um assistente for cancelado, o assistente retornará um resultado apropriado e não retornará nenhum dado.
Se um usuário aceitar um assistente, o assistente retornará um resultado apropriado e retornará os dados coletados.
Quando o assistente é concluído (aceito ou cancelado), as páginas que o assistente compreende são removidas do diário. Isso mantém cada instância do assistente isolada, evitando possíveis dados ou anomalias de estado.
Consulte também
.NET Desktop feedback