Pero en cambio en otro programa similar que tengo con las mismas lineas de codigo no me salta ningun error y hace lo que deberia hacer.
database = DataBaseFactory.GetlantaDatabaseEntities();
this.productoList.ItemsSource = database.producto;
private void ButtonNewProductClick(object sender, System.Windows.RoutedEventArgs e)
{
ObjectSet<producto> listProd = (ObjectSet<producto>) this.productoList.ItemsSource;
producto prod = listProd.CreateObject();
prod.imagen = null;
prod.mosaico = null;
prod.id_producto = -1;
if (selectedProduct != null)
{
prod.alto = selectedProduct.alto;
prod.ancho = selectedProduct.ancho;
prod.largo = selectedProduct.largo;
}
else
{
prod.alto = Systema.MIN_L;
prod.ancho = Systema.MIN_L;
prod.largo = Systema.MIN_L;
}
//obtengo un nombre unico
String nombre = "PRODUCTO";
int i=0;
foreach (producto p in listProd)
{
try
{
int aux = int.Parse(p.nombre.Substring(8));
if (i <= aux)
{
i = aux + 1;
}
}
catch (Exception)
{ }
if (String.CompareOrdinal(p.nombre.ToUpper(), (nombre + i)) == 0)
{
i++;
}
}
prod.nombre = nombre + i;
listProd.AddObject(prod);
database.SaveChanges();
database = DataBaseFactory.GetUpdatedlantaDatabaseEntities();
this.productoList.ItemsSource = database.producto;
selectedProduct = prod;
this.mosaicoList.ItemsSource = selectedProduct.mosaico;
this.selectedMosaico = null;
this.productoNombre.Text = selectedProduct.nombre;
this.alto.Text = selectedProduct.alto.ToString();
this.ancho.Text = selectedProduct.ancho.ToString();
this.largo.Text = selectedProduct.largo.ToString();
this.sliderAlto.Value = selectedProduct.alto;
this.sliderAncho.Value = selectedProduct.ancho;
this.sliderLargo.Value = selectedProduct.largo;
Ese codigo es para crear nuevos elementos en la base de datos y que aparezcan en un DataGrid y es lo que quiero hacer en el nuevo codigo.
Esta es la parte de crear un nuevo producto del nuevo codido:
private void ButtonNewProductClick(object sender, RoutedEventArgs e)
{
ObjectSet<element> listProd = (ObjectSet<element>) this.productoList.ItemsSource;
}
En esa linea si pongo el acceso a la coleccion como .ToList() me dice lo siguiente:
Información adicional: No se puede convertir un objeto de tipo 'System.Collections.Generic.List`1[HMI_2.element]' al tipo 'System.Data.Objects.ObjectSet`1[HMI_2.element]'
Edit: Acabo de ver que el primer codigo ,el que funciona, tiene esta linea en el .XAML dentro de Page.Resources no se si tendra que ver:
<CollectionViewSource x:Key="productoViewSource" d:DesignSource="{d:DesignInstance my:producto, CreateList=True}" />