segunda-feira, 24 de junho de 2013

Passando parâmetros entre páginas no Windows Phone

Em algum momento no seu aplicativo, será necessário passar o parâmetro de uma página para outra. Existem várias maneiras de se fazer, vou mostrar agora algumas destas formas de se passar um parâmetro simples de uma página para outra.

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&parameter2=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