Olá Pessoal,
Estou com o seguinte problema, estou tentando enviar uma lista de itens obtidos através de web service para uma View. A ideia é essa lista de itens alimentarem um com alguns dados. O código atual esta da seguinte maneira:
Este é o ViewCode :
public partial class BuscaCidadeDestinoView : ContentPage
{
public BuscaCidadeDestinoViewModel ViewModel { get; set; }
public BuscaCidadeDestinoView ()
{
InitializeComponent();
ViewModel = new BuscaCidadeDestinoViewModel();
this.BindingContext = this.ViewModel;
}
protected async override void OnAppearing()
{
base.OnAppearing();
await this.ViewModel.GetCidades();
//verifica se ocorreu tudo bem na listagem de cidades
MessagingCenter.Subscribe<Exception>(this, "FalhaListagem",
(msg) =>
{
DisplayAlert("Erro", "Ocorreu um erro ao obter a listagem ", "Ok");
});
}
protected override void OnDisappearing()
{
base.OnDisappearing();
MessagingCenter.Unsubscribe<String>(this, "CidadeDestino");
}
}
}
e esta é a ViewModel:
public class BuscaCidadeDestinoViewModel : BaseViewModel
{
private string buscaCidadeDestino;
//lista de linhas por empresa
const string URL_CIDADES = "Url que estou usando para acessar web service";
public System.Collections.ObjectModel.ObservableCollection<CidadeDestino> ListaCidades { get; set; }
public List<string> cidades;
public ICommand BuscaPartidasCommand { get; set; }
public BuscaCidadeDestinoViewModel()
{
this.ListaCidades = new System.Collections.ObjectModel.ObservableCollection<CidadeDestino>();
this.BuscaPartidasCommand = new Command(() =>
{
MessagingCenter.Send<String>(this.BuscaCidadeDestino, "CidadeDestino");
//instrução lambda para não permitir o envio de formulário com dados em branco
}, () =>
{
return !string.IsNullOrEmpty(this.BuscaCidadeDestino);
});
}
private bool aguarde;
public bool Aguarde
{
get { return aguarde; }
set
{
aguarde = value;
OnPropertyChanged();
}
}
class CidadeJson
{
public string Ds_Cidade_Destino { get; set; }
}
//metodo para pegar dados de um webservice
public async Task GetCidades()
{
Aguarde = true;
try
{
//abre uma conexão do tipo Http
HttpClient cliente = new HttpClient();
//retorna uma string "GetStringAsync" e é armazenada na variavel resultado
var resultado = await cliente.GetStringAsync(URL_CIDADES);
//"Divide" a string recebida em diversos objetos e armazena na variavel cidadeJson
var cidadeJson = JsonConvert.DeserializeObject<CidadeJson[]>(resultado);
foreach (var cidade in cidadeJson)
{
this.ListaCidades.Add(new CidadeDestino
{
DsCidadeDestino = cidade.Ds_Cidade_Destino
});
}
foreach(var destino in ListaCidades)
{
this.cidades = new List<string>();
cidades.Add(destino.DsCidadeDestino);
}
Aguarde = false;
}
catch (Exception e)
{
MessagingCenter.Send<Exception>(e, "FalhaListagem");
}
}
Agradeço desde já a quem puder ajudar.
atenciosamente.