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.
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
... <Button Name="btnNavegar1" Content="Chamar página 2" Click="btnNavegar1_Click" /> ...
Trecho de código em C# que irá “chamar” a página 2
private void btnNavegar1_Click(object sender, RoutedEventArgs e) { Frame.Navigate(typeof(Pagina2)); }
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
... <Button Name="btnNavegar1" Content="Chamar página 2" Click="btnNavegar1_Click" /> ...
Trecho de código em C# que irá “chamar” a página 2
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); }
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:
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... //... //... }
Espero ter ajudado.
Abraços,
Eduardo Henrique Rizo
Post Relacionado:
[twitter-follow screen_name=’eduardorizo’ show_count=’yes’]