2009-11-12 10 views
10

Parfois, les exemples les plus simples sont les plus difficiles à trouver. . .WPF - exemple avec DataGridComboBoxColumn

J'ai une grille de données avec 2 colonnes. Une colonne contient des informations de rôle, l'autre colonne doit contenir une zone de liste déroulante avec une liste d'utilisateurs disponibles. Les données de la liste déroulante ne sont pas liées aux données de la première colonne. Je suis rebuté par le fait que la combobox n'a pas de datacontext, seulement une source d'items et je ne peux pas sembler utiliser la liaison non plus. Est-ce que quelqu'un peut me diriger vers un exemple simple qui utilise deux ensembles de données différents pour les données dans une table et la zone de liste déroulante?

Répondre

7

Les colonnes de la grille de données n'ont pas de datacontext, car elles ne sont jamais ajoutées à l'arborescence visuelle. sonner un peu bizarre, mais jetez un oeil à vinces blog, il a un bon exemple de la mise en page visuelle. une fois que la grille est dessinée les cellules ont un contexte de données et vous pouvez définir la source zones de liste déroulante articles en les utilisant des liaisons normales (pas de ressources statiques ..)

vous pouvez accéder à la boîte combo source de points en tant que tels

<dg:DataGridComboBoxColumn> 
     <dg:DataGridComboBoxColumn.EditingElementStyle> 
     <Style TargetType="ComboBox"> 
      <Setter Property="ItemsSource" Value="{Binding Path=MyBindingPath}" /> 
     </Style> 
     </dg:DataGridComboBoxColumn.EditingElementStyle> 
    </dg:DataGridComboBoxColumn> 

un coup d'oeil here et aussi here pour un code

1

au lieu d'utiliser DataGridTextColumns on utilise un DataGridComboBoxColumn à la place. Ensuite, on remplit les données en utilisant ItemsSource, qui dans l'exemple ci-dessous pointe vers une énumération externe dans la ressource statique, et finalement on lie le résultat à l'objet cible qui contiendra la sélection de l'utilisateur dans SelectedItemBinding.

<DataGrid.Columns> 

<DataGridComboBoxColumn Header="MySelections" 
         SelectedItemBinding="{Binding MySelectionsProperty}" 
         ItemsSource="{Binding Source={StaticResource mySelectionsEnum}}" /> 
</DataGrid.Columns> 

Voir un exemple complet sur MSDN à DataGridComboBoxColumn Class

Questions connexes