2010-10-02 6 views
0

Cela peut sembler une question triviale, mais même ici, dans Stackflow, je n'ai trouvé que la liaison à une simple collection de chaînes.MS DataGrid (WPF): Comment lier un combobox à une classe?

J'ai une classe Parent avec deux propriétés Nom et âge.

J'ai une classe Child avec deux propriétés ChildName et ChildAge.

Dans modèle MVVM J'expose ces propriétés dans les ViewModels et en plus je suis aussi d'ajouter dans le ParentViewModel aussi ObservableCollection Enfants

Par conséquent, le ParentViewModel contient trois propriétés exposées: Nom, âge et enfants.

//Inside ParentViewModel 
public ObservableCollection<ChildViewModel> Children 

Mon Window.xaml est lié à la MainViewModel qui est l'exposition d'un

public ObservableCollection<ParentViewModel> Parents { get; set; } 

Le Datagrid est défini comme suit:

<DataGrid ItemsSource="{Binding Parents}" AutoGenerateColumns="False"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Name" Binding="{Binding Name}" /> 
       <DataGridTextColumn Header="Age" Binding="{Binding Age}"/> 
       <DataGridComboBoxColumn Header="Children" 
             DisplayMemberPath="ChildName" 
             SelectedValueBinding="{Binding Children.ChildName}" 
             SelectedValuePath="ChildName" 
             SelectedItemBinding="{Binding Children}" 
             > 

       </DataGridComboBoxColumn> 
      </DataGrid.Columns> 
     </DataGrid> 

Alors Nom et âge des parents montrent correctement, Je ne vois pas la zone de liste déroulante enfants remplie. Je suis confus et frustré. S'il vous plaît aider. :)

Répondre

0

Définissez la propriété ItemsSource de DataGridComboBoxColumn sur Children.

+0

Je viens de l'essayer et ça ne marche pas :( – Houman

Questions connexes