A classe Uri (Uniform Resource Identifier) representa o endereço das páginas, podendo ser de dois tipos:
- Absolute - um endereço simples de página.
- Relative - endereço de página com parâmetros.
Vejamos um exemplo:
Uri uri =
new
Uri(
"/pagina.xaml"
, UriKind.Relative);
Vamos falar de outro componente importante na navegação entre páginas, o objeto NavigationService que é responsável por gerenciar a navegação. Podemos direcionar para a página anterior (GoBack), para a próxima (GoForward), ou para um endereço específico (Nagivate). Vejamos um exemplo:
Uri uri =
new
Uri(
"/pagina.xaml"
, UriKind.Relative);
NavigationService.Navigate(uri);
Note que passamos o objeto instanciado da classe Uri como parâmetro para o método Navigate. Podemos unir o código do C# com o XAML, vejamos:
Na pagina um, dentro de um grid, insira um HyperlinkButton:
<
Grid
Grid.Row
=
"1"
Margin
=
"12,0,12,0"
>
<
HyperlinkButton
x:Name
=
"irpage2"
Content
=
"Ir para a Página 2"
Click
=
"irpage2_Click"
/>
</
Grid
>
Na pagina dois, dentro de um grid, insira outro HyperlinkButton:
<
Grid
Grid.Row
=
"1"
Margin
=
"12,0,12,0"
>
<
HyperlinkButton
x:Name
=
"voltarpage2"
Content
=
"Voltar"
Click
=
"voltarpage2_Click"
/>
</
Grid
>
Agora vamos implementar o código:
Página um:
private
void
irpage2_Click(
object
sender, RoutedEventArgs e)
{
this
.NavigationService.Navigate(
new
Uri(
"/Pagina2.xaml"
, UriKind.Relative));
}
Página dois:
private
void
voltarpage2_Click(
object
sender, RoutedEventArgs e)
{
if
(
this
.NavigationService.CanGoBack)
{
this
.NavigationService.GoBack();
}
}
Na página um implementamos o método click do HyperlinkButton, passando como parâmetro um objeto Uri para o método Navigate. Já na página dois, verificamos o conteúdo da flag CanGoBack, que nos diz se é possível retornar a página anterior, caso positivo, o objeto NavigationService chama o método Goback().