Question

Parfois, les exemples les plus simples sont les plus difficiles à trouver. . .

J'ai un DataGrid avec 2 colonnes. Une colonne contient des informations de rôle, l'autre colonne doit avoir une zone de liste déroulante avec une liste d'utilisateurs disponibles. Les données du combobox est sans rapport avec les données de la première colonne. Je suis jeté par le fait que le combobox ne dispose pas d'un datacontext, seul un ItemSource et je ne peux pas sembler utiliser la liaison soit.

Quelqu'un peut-il s'il vous plaît me montrer un exemple simple qui utilise deux ensembles de données différentes pour les données dans une table et la zone de liste déroulante?

Était-ce utile?

La solution

les colonnes du DataGrid dont ont un datacontext, car ils ne sont jamais ajoutés à l'arbre visuel. sembler un peu bizarre, mais un coup d'oeil à vinces blog, son obtenu 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 (ressources non statiques ..)

vous pouvez accéder à la source des éléments de zone de liste déroulante en tant que telle

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

consulter ici aussi pour un code

Autres conseils

Au lieu d'utiliser DataGridTextColumns on utilise un DataGridComboBoxColumn à la place. Ensuite, on remplit les données en utilisant le ItemsSource, qui, dans les points d'exemple ci-dessous à un ENUM externe dans la ressource statique, et enfin un se fixe le résultat à l'objet cible qui contiendra la sélection de l'utilisateur dans le SelectedItemBinding.

<DataGrid.Columns>

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

Voir un exemple complet sur MSDN DataGridComboBoxColumn classe

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top