I'm developing an application in Xamarin-Forms using the MVVM standard and I'm having the following difficulty. In one of my screens I am using a DataGrid to display some information separated by rows and columns, when the user clicks on one of the lines I need to trigger an event using a Binding, however I have this difficulty. I would like to know how to construct this method that receives the ItemSelected event from the DataGrid, using the MVVM template. I tried using a {get; set;} which receives an object from my class that populates the DataGrid, but it did not work.
My View Code:
namespace AprovacaoMetagal.ViewModel
{
public class DetAprovViewModel : BaseViewModel
{
public Aprovacao aprovacao { get; set; }
private Aprovacao aprovacaoSelect;
public Aprovacao AprovacaoSelecionadaDet
{
get
{
return aprovacaoSelect;
}
set
{
aprovacaoSelect = value;
if (aprovacaoSelect != null)
{
MessagingCenter.Send(aprovacaoSelect, "AprovacaoSelecionadaDetalheDet");
}
}
}
public ObservableCollection<AprovacaoListagem> listaDetalhes { get; set; }
public ObservableCollection<AprovacaoListagem> ListaDetalhes
{
get
{
return listaDetalhes;
}
set
{
this.listaDetalhes = value;
}
}
public DetAprovViewModel(Aprovacao aprovacao)
{
this.aprovacao = aprovacao;
this.listaDetalhes = new ObservableCollection<AprovacaoListagem>();
AprovacaoCommand = new Command(() =>
{
MessagingCenter.Send<Aprovacao>(aprovacao, "AprovacaoSelecionadaDetalheDet");
});
CarregarListaDetalhes();
}
public void CarregarListaDetalhes()
{
this.ListaDetalhes.Clear();
if(this.aprovacao.TipoDocumento==1)
{
this.ListaDetalhes = new ObservableCollection<AprovacaoListagem>
{
new AprovacaoListagem { Aprovacao = 195053,Data = new DateTime(2018,03,02).ToShortDateString(),Perfil="Gerente"},
new AprovacaoListagem { Aprovacao = 195552,Data = new DateTime(2018,03,10).ToShortDateString(),Perfil="Diretor"},
};
}
else if(this.aprovacao.TipoDocumento==5)
{
this.ListaDetalhes = new ObservableCollection<AprovacaoListagem>
{
new AprovacaoListagem { Aprovacao = 196053,Data = new DateTime(2018,03,02).ToShortDateString(),Perfil="Gerente"},
new AprovacaoListagem { Aprovacao = 196552,Data = new DateTime(2018,03,10).ToShortDateString(),Perfil="Conselho"},
new AprovacaoListagem { Aprovacao = 196852,Data = new DateTime(2018,03,10).ToShortDateString(),Perfil="Diretor"},
};
}
else
{
this.ListaDetalhes = new ObservableCollection<AprovacaoListagem>
{
new AprovacaoListagem { Aprovacao = 195553,Data = new DateTime(2018,03,02).ToShortDateString(),Perfil="Gerente"},
new AprovacaoListagem { Aprovacao = 196552,Data = new DateTime(2018,03,10).ToShortDateString(),Perfil="Custos"},
new AprovacaoListagem { Aprovacao = 196852,Data = new DateTime(2018,03,10).ToShortDateString(),Perfil="Diretor"},
};
}
}
public ICommand AprovacaoCommand { get; private set; }
}
}