Pick up Selected line in Datagrid Xamarin

Asked

Viewed 42 times

0

I am developing an application in Xamarin-Forms using the MVVM standard and I have the following difficulty. On one of my screens I’m using a Datagrid to display some information separated by rows and columns, when the user clicks on one of the rows I need to trigger an event using a Binding, but I’m having this difficulty. I would like to know how to build this method that receives the Itemselected event from Datagrid, using the MVVM model. I tried using a {get; set;} method that receives an object from my class that fills the Datagrid, but it didn’t work.

Code of My View:

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; }
    }
}
  • Would you have your code? So it will be easier for the community to help you.

  • Datagrid? Is some component external to XF?

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.