Passando uma string simples
A maneira mais simples de se passar o parâmetro é através de uma string simples, funciona como uma passagem de parâmetros em linguagens web, pode ser colocado diretamente em links ou em métodos, como o Navigate de algum controle:
private void btnNavigate_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/Page1.xaml?parameter=test", UriKind.Relative));
}
Para recuperar o valor, tem que ser no método OnNavigatedTo da página de destino, utilizando o objeto NavigationContext:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
string parameterValue = NavigationContext.QueryString["parameter"];
}
String Formatada
Pode-se também se utilizar de strings formatadas para passar o parâmetro, não esqueça de utilizar o método Uri.EscapeUriString para evitar exceções de formato da string:
private void btnNavigate_Click(object sender, RoutedEventArgs e)
{
string stringVariable = "String de teste";
NavigationService.Navigate(new Uri(string.Format("/Page1.xaml?parameter={0}", Uri.EscapeUriString(stringVariable), UriKind.Relative)));
}
Para recuperar a string é a mesma coisa de uma string simples.
Passando Múltiplos Parâmetros
Como comentado anteriormente, a passagem de parâmetros funciona de maneira bem similar a demais linguagens de programação web, então, para passar mais de um parâmetro, basta adicionar o conector & entre os parâmetros:
private void btnNavigate_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/Page1.xaml?parameter1=p1¶meter2=p2", UriKind.Relative));
}
Para recuperar os valores é só repetir o comando para cada parâmetro:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
string parameterValue1 = NavigationContext.QueryString["parameter1"];
string parameterValue2 = NavigationContext.QueryString["parameter2"];
}
Simples assim.
Fonte: http://www.geekchamp.com/tips/how-to-pass-data-between-pages-in-windows-phone-alternatives
Nenhum comentário:
Postar um comentário