WPF grille de données de liaison à la liste des problèmes

J'ai une liste d'objets personnalisés: dire les Fruits avec deux propriétés de la chaîne de Nom et de la Couleur. Ces derniers sont dans une Liste.

private readonly List<Fruit> fruitList = new List<Fruit>();

Puis-je charger des fruits d'objets dans la liste.

Je suis en train d'essayer de lier cette liste de 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>

Raison, ils sont dans une zone de liste déroulante est parce que je veux que l'utilisateur puisse modifier la relation. Ce n'est pas l'exemple réel, mais vous obtenez l'idée. Dire pour le bien de l'exemple le fruit n'était pas mûr pour qu'ils changent de Banane de la couleur au vert 🙂

Je ne suis pas du tout avoir la chance d'obtenir ces éléments dans la grille de données... et en bas de la piste, je veux un clic sur l'élément dans le datagridcell pour changer de zone de liste déroulante et afficher tous les possibles de types de Noms de Fruits et de Couleurs (de sorte qu'ils peuvent changer les relations)

Ici est une erreur que je reçois:

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')

Peut aider quelqu'un? La raison pour laquelle je suis en train de ma colonnes en xaml, afin que je puisse régler la largeur de star taille et les colonnes de largeur égale.

Je vois la plupart des exemples d'utilisation d'une ObservableCollection mais si je peux les lier à la liste pourquoi dois-je utiliser?

S'il vous plaît laissez-moi savoir si mon exemple, exige des précisions

Edit: ce que j'ai maintenant:

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;

En fait quand j'utilise DataContext je n'ai pas les éléments. Lorsque j'utilise ItemSource-je obtenir des lignes vides, mais le nombre correct de lignes si cela semble de plus en plus dans le bon sens.

Je peux obtenir les données pour voir si je le laisse générer automatiquement des colonnes. Si j'ai mis autogeneratecolumns false, puis de spécifier mes colonnes en xaml comme je veux utiliser étoiles de dimensionnement, - je obtenir le bon nombre de colonnes, mais aucun texte!

OriginalL'auteur baron | 2010-01-25