private void btnModificar_Click(object sender, RoutedEventArgs e)
        {
            if (dgArtesanias.SelectedItem != null)
            {
                Artesania a = (Artesania)dgArtesanias.SelectedItem;

                a.Descripcion = txtDescripcion.Text;
                a.Material    = (Material)cboMaterialPrincipal.SelectedItem;

                if (rdbNacional.IsChecked == true)
                {
                    a.Procedencia = rdbNacional.Content.ToString();
                }
                else
                {
                    a.Procedencia = rdbImportado.Content.ToString();
                }

                a.PathImagen = imgPhoto.Source.ToString();

                //Le ponemos una banderita de que se modicaron datos en la entidad..
                datos.Entry(a).State = System.Data.Entity.EntityState.Modified;
                datos.SaveChanges();

                //Eliminamos las categorias que tenga asociada actualmente..y todas las que seleccione (van a asociarse nuevamente)
                var arteCategorias = a.Artesania_Categoria;
                if (arteCategorias.Count > 0)
                {
                    datos.Artesania_Categoria.RemoveRange(arteCategorias);
                    datos.SaveChanges();
                }

                //Finalmente, actualizamos las categorias asociadas
                foreach (var chk in chksCategorias.Children.OfType <CheckBox>())
                {
                    //Obtenemos la categoria de acuerdo al id, guardado en el tag:
                    if (chk.IsChecked == true)
                    {
                        int                 idCategoria = int.Parse(chk.Tag.ToString());
                        Categoria           c           = datos.Categoria.Find(idCategoria);
                        Artesania_Categoria ac          = new Artesania_Categoria();
                        ac.Artesania = a;
                        ac.Categoria = c;
                        datos.Artesania_Categoria.Add(ac);
                        datos.SaveChanges();
                    }
                }

                CargarDatosGrilla();
            }
            else
            {
                MessageBox.Show("Debe seleccionar una Artesania de la grilla para modificar!");
            }
        }
        private void btnGuardar_Click(object sender, RoutedEventArgs e)
        {
            //Validaciones de ingreso de datos!
            //Try Catch!


            //Crear un objeto de Tipo Artesania, agregarlo al modelo... Y el insert into..?
            Artesania arte = new Artesania();

            //arte.Id_Artesania = ? Es autogenerado! ish!
            arte.Descripcion = txtDescripcion.Text;
            arte.Material    = (Material)cboMaterialPrincipal.SelectedItem;

            if (rdbNacional.IsChecked == true)
            {
                arte.Procedencia = rdbNacional.Content.ToString();
            }
            else
            {
                arte.Procedencia = rdbImportado.Content.ToString();
            }

            arte.PathImagen = imgPhoto.Source.ToString();

            //Guardamos la artesania
            datos.Artesania.Add(arte);
            datos.SaveChanges();

            //Como Artesania/Categoria se guarda en una tabla aparte (correlación), entonces a continuación hacemos eso...
            //Que categorias checkeó?
            foreach (var chk in chksCategorias.Children.OfType <CheckBox>())
            {
                //Obtenemos la categoria de acuerdo al id, guardado en el tag:
                if (chk.IsChecked == true)
                {
                    int       idCategoria = int.Parse(chk.Tag.ToString());
                    Categoria c           = datos.Categoria.Find(idCategoria);

                    Artesania_Categoria ac = new Artesania_Categoria();
                    ac.Artesania = arte;
                    ac.Categoria = c;

                    datos.Artesania_Categoria.Add(ac);
                    datos.SaveChanges();
                }
            }
            CargarDatosGrilla();
        }