public AnMeliponarioCajaViewModel()
 {
     Cajas      = new ObservableCollection <Caja>();
     Historicos = new ObservableCollection <Historico>();
     LoadMeliponarios(); //carga el listado de cajas
     LoadCajas();        //carga el listado de cajas
     IsEnabled      = true;
     instance       = this;
     AccionesCaja   = ANAccionMeliponarioViewModel.GetInstance().Acciones;      //obtengo los datos de mi lista en la otra ComposicionHogarViewModel
     HeighListViewB = ANAccionMeliponarioViewModel.GetInstance().HeighListView; //obtengo el heigh de ComposicionHogarViewModel
 }
        async void Guardar()
        {
            isEnabled = false;
            if (string.IsNullOrEmpty(FechaEntrega.ToString()))
            {
                await Application.Current.MainPage.DisplayAlert("error", "Debe Llenar El Campo Fecha", "Excelente");

                IsEnabled = true;
                return;
            }
            var fecha = FechaEntrega.ToString();

            #region Limpiar Cache //borrar los datos existentes en persistencia

            if (Application.Current.Properties.ContainsKey("ContadorAcciones"))
            {
                Elementos = int.Parse((Application.Current.Properties["ContadorAcciones"]) as string);
            }
            else
            {
                Elementos = 0;
            }
            for (int j = 0; j < Elementos; j++) //Elementos va a representar el total de elementos o filas existentes en mi persistencia
            {
                if (Application.Current.Properties.ContainsKey("TipoAccion" + j))
                {
                    Application.Current.Properties.Remove("TipoAccion" + j);
                }
                if (Application.Current.Properties.ContainsKey("FechaAccion" + j))
                {
                    Application.Current.Properties.Remove("FechaAccion" + j);
                }
                if (Application.Current.Properties.ContainsKey("Responsable"))
                {
                    Application.Current.Properties.Remove("Responsable");
                }
                if (Application.Current.Properties.ContainsKey("Comentario"))
                {
                    Application.Current.Properties.Remove("Comentario");
                }
            }

            #endregion

            #region Ciclo para Guardar en Persistencia mi lista Actual
            i = 0; //inicio el contador de mis elementos o filas en (0)
            foreach (var action in AccionesCaja)
            {
                Application.Current.Properties["TipoAccion" + i]  = action.TipoAccion.ToString();
                Application.Current.Properties["FechaAccion" + i] = action.FechaAccion.ToString();
                Application.Current.Properties["Responsable" + i] = action.Responsable.ToString();
                Application.Current.Properties["Comentario" + i]  = action.Comentario.ToString();
                i++;
                Application.Current.Properties["ContadorAcciones"] = i.ToString();
                await Application.Current.SavePropertiesAsync();
            }

            #endregion

            int filas;
            filas = AccionesCaja.Count;
            Application.Current.Properties["ContadorAcciones"] = filas.ToString();   //hay que examinar esta linea, es de prueba porque creo que no se actualiza bien el contador en la otra viewmodel cuando se borran todos los registros y esta linea evita eso
            HeighListViewB = 44 * filas;                                             //actalizo mi heigh
            ANAccionMeliponarioViewModel.GetInstance().Acciones = this.AccionesCaja; //asigno los datos de mi lista
            await Application.Current.MainPage.DisplayAlert("Notificación", "Usted Tiene hasta Ahora: " + filas + " Acciones en Persistencia", "Excelente");

            await Application.Current.MainPage.DisplayAlert(
                "Hola",
                IdCaja + " " + Tipo + " " + Productor + " " + fecha + " " + Comentario + " " + Origen + " " + FloraNueva,
                "Aceptar");


            #region Miranda: Guardar Tabla Cajas

            #region Ciclo para Guardar en Persistencia
            if (Application.Current.Properties.ContainsKey("Contadorcajas"))//verifico cuantos elementos tiene mi lista para saber cual es la psocion del nuevo elemento a agregar
            {
                ElementosCaja = (int.Parse((Application.Current.Properties["Contadorcajas"]) as string));
            }
            else
            {
                ElementosCaja = 0;
            }

            if (FloraNueva)
            {
                activacaja = "No";
            }
            else
            {
                activacaja = "Si";
            }
            string fechaEntrega = FechaEntrega.ToString();
            if (string.IsNullOrEmpty(Tipo))
            {
                Tipo = "";
            }
            if (string.IsNullOrEmpty(Comentario))//si no hago esto, se le pasan valores nulos a persistencia
            {
                Comentario = "";
            }

            Application.Current.Properties["Idcaja" + ElementosCaja]           = IdCaja.ToString();
            Application.Current.Properties["Tipocaja" + ElementosCaja]         = Tipo.ToString();
            Application.Current.Properties["Fechaentregacaja" + ElementosCaja] = (FechaEntrega).ToString(); //revisar, cuando no se selecciona fecha esta linea manda error OJOO
            Application.Current.Properties["Activacaja" + ElementosCaja]       = activacaja.ToString();
            Application.Current.Properties["Comentariocaja" + ElementosCaja]   = Comentario.ToString();
            Application.Current.Properties["Contadorcajas"] = (ElementosCaja + 1).ToString();
            await Application.Current.SavePropertiesAsync();

            #endregion


            int filascaja;
            filascaja         = ElementosCaja + 1;
            HeighListViewCaja = 44 * filascaja;//actalizo mi heigh
            await Application.Current.MainPage.DisplayAlert("Notificación", "Usted Tiene hasta Ahora: " + filascaja + " Cajas Registradas", "Excelente");

            Cajas.Add(new Caja()
            {
                Activa       = activacaja.ToString(),
                Comentario   = Comentario.ToString(),
                FechaEntrega = FechaEntrega,
                IdCaja       = IdCaja, //int
                TipoCaja     = Tipo.ToString(),
            });
            ANMeliponarioViewModel.GetInstance().CajasAN         = this.Cajas;             //asigno los datos de mi lista
            ANMeliponarioViewModel.GetInstance().HeighListViewAN = this.HeighListViewCaja; //actualizo el heigh de mi vista anterior
            IsEnabled = true;

            await Application.Current.MainPage.Navigation.PopAsync();

            #endregion
        }