Tengo una lista de objetos personalizados: di Frutos con dos propiedades de cadena Nombre y Color. Estos están en una lista.WPF Enlace de la cuadrícula de datos a problemas de la lista
private readonly List<Fruit> fruitList = new List<Fruit>();
Luego cargo los objetos de fruta en la lista.
Estoy tratando de obligar a esta lista para WPF DataGrid:
C#:
dgFruit.ItemsSource = "{Binding}";
XAML:
<toolkit:DataGrid Name="dgFruit"
ItemsSource="{Binding Path=fruitList}" >
<toolkit:DataGrid.Columns>
<toolkit:DataGridComboBoxColumn
Header="Name"
SelectedValueBinding="{Binding Path=Name}"
TextBinding="{Binding Path=Name}" Width="5*" />
<toolkit:DataGridComboBoxColumn
Header="Color"
SelectedValueBinding="{Binding Path=Color}"
TextBinding="{Binding Path=Color}" Width="5*" />
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
razón por la que están en un cuadro combinado es porque quiero usuario sea capaz de cambiar la relación. Este no es el verdadero ejemplo, pero entiendes la idea. Diga por el ejemplo que la fruta no estaba madura, entonces cambian el color Banana a verde :)
No estoy teniendo suerte para conseguir estos artículos en la cuadrícula de datos ... y bajar la pista, quiero un haga clic en el elemento de la DataGridCell para cambiar al cuadro combinado y mostrar todos los posibles tipos de nombres de frutas y colores (para que puedan cambiar las relaciones)
Aquí es un error que estoy consiguiendo:
System.Windows.Data Error: 39 : BindingExpression path error: 'Color' property not found on 'object' ''Char' (HashCode=6750311)'. BindingExpression:Path=Color; DataItem='Char' (HashCode=6750311); target element is 'TextBlockComboBox' (Name=''); target property is 'Text' (type 'String')
puede alguien ayuda? La razón por la que estoy configurando mis columnas en xaml es para poder establecer el ancho del tamaño de estrella y que las columnas tengan el mismo ancho.
Veo que la mayoría de los ejemplos usan un ObservableCollection pero si puedo vincularlo a la lista ¿por qué tengo que usar esto?
favor hágamelo knwo si mi ejemplo se requiere una mayor clarificación
Editar: lo que tengo ahora:
XAML:
<toolkit:DataGrid Name="dgFruit"
ItemsSource="{Binding}"
AutoGenerateColumns="False">
<toolkit:DataGrid.Columns>
<toolkit:DataGridTextColumn
Header="Name"
Width="5*"/>
<toolkit:DataGridComboBoxColumn
Header="Color"
Width="5*"/>
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
C#:
DataContext = fruitList;
realidad cuando uso DataContext no obtengo ningún ite Sra. Cuando uso ItemSource, obtengo líneas en blanco, pero el número correcto de filas, así que esto parece más a lo largo de las líneas correctas.
Puedo obtener los datos para mostrar si dejo que Auto genere columnas. Si configuro autogeneratecolumns en false y luego especifico mis columnas en xaml como quiero usar el tamaño de estrellas, obtengo el número correcto de columnas pero ¡no texto!
pero, cuando hago esto, las columnas que defino en xaml se ignoran y se agregan nuevas a la izquierda. ¿Puedo establecer programáticamente tamaños de estrellas para estas columnas generadas automáticamente? – baron
Puede desactivar los generados automáticamente. En su DataGrid en XAML: AutoGenerateColumns = "False" – lesscode
cada vez más cerca, ahora no hay elementos que se muestren :(ver edición reciente – baron