Olá pessoal, tudo bom?

Este é um post básico para quem está iniciando o desenvolvimento de aplicações universais (UWP) e gostaria de saber como proceder a navegação (ligação) entre uma página e outra.

Navegando da página 1 para a página 2

Navegando da página 1 para a página 2

Exemplo 1: Navegação simples

Suponha que você tenha em seu projeto a Pagina1.xaml e a Pagina2.xaml. Na página 1 você tem um botão que ao ser tocado dispara um evento para chamar a página 2. Vejamos:

Trecho de código XAML para definição do botão

[sourcecode language=”xml”] …
<Button Name="btnNavegar1" Content="Chamar página 2" Click="btnNavegar1_Click" />

[/sourcecode]

Trecho de código em C# que irá “chamar” a página 2

[sourcecode language=”csharp”]

private void btnNavegar1_Click(object sender, RoutedEventArgs e)
{
Frame.Navigate(typeof(Pagina2));
}

[/sourcecode]

Exemplo 2: Navegação com passagem de parâmetros

Tomando por base o exemplo 1, agora queremos chamar a página 2 passando a ela um conjunto de valores que deverão ser recepcionados para utilização futura, ou seja, a página 1 irá enviar valores que serão utilizados pela página 2.

Trecho de código XAML para definição do botão

[sourcecode language=”xml”] …
<Button Name="btnNavegar1" Content="Chamar página 2" Click="btnNavegar1_Click" />

[/sourcecode]

Trecho de código em C# que irá “chamar” a página 2

[sourcecode language=”csharp”]

private void btnNavegar1_Click(object sender, RoutedEventArgs e)
{
List<string> valores = new List<string>
{
"Valor 1",
"Valor 2",
"Valor 3",
"Valor 4"
};
Frame.Navigate(typeof(Pagina2), valores);
}

[/sourcecode]

Repare que o método Navigate além de chamar a classe Pagina2, também envia por parâmetro a lista de strings valores.

Vale ressaltar que é possível passar quaisquer tipos de objetos como parâmetro.

Na página 2 (Pagina2.xaml.cs) devemos recepcionar o(s) parâmetro(s) através do método OnNavigatedTo. Veja o exemplo abaixo:

[sourcecode language=”csharp”]

protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.navigationHelper.OnNavigatedTo(e);

//Todo parâmetro chega pelo argumento e
//Você o recepciona e converte para o tipo de origem do parâmetro

List<string> dados = e.Parameter as List<string>;

//Fazer o restante de sua implementação aqui…
//…
//…
}

[/sourcecode]

Espero ter ajudado.

Abraços,

Eduardo Henrique Rizo (@eduardorizo)

MCP

Post Relacionado: