La liaison de l'ItemsSource pour WPF DataGridComboBox Colonne

Question: la Plupart des exemples de code sur le DataGridComboBox semblent utiliser une ressource statique comme le ItemsSource. Dans mon cas d'utilisation, j'aimerais fournir différents ItemsSources avec chaque objet lié. Cela peut-il être fait?

Fond: je suis en train de lier une collection de la Question des objets de la classe à un WPF DataGrid, à l'aide d'un DataGridComboBoxColumn de contrôle. La chaîne de Réponse fournit la SelectedValue. J'aimerais que la AnswerDomain liste de fournir le ItemsSource pour chaque zone de liste déroulante. Le AnswerDomain diffère de la Question à la Question.

Classe

public class Question
  {
    string Answer {get; set;}
    List<string> AnswerDomain {get; set;}
    //...other stuff
  }

XAML

<DataGrid ItemsSource="{Binding Path=InspectionItems}" AutoGenerateColumns="False" Name="dataGrid1" >
    <DataGrid.Columns>
        <DataGridComboBoxColumn Header="Answer Domain"
                                DisplayMemberPath="Answer"
                                SelectedValuePath="Answer"
                                ItemsSource="{Binding Path=AnswerDomain}" 
                                    >
        </DataGridComboBoxColumn>
    </DataGrid.Columns>
</DataGrid>

Problème: Il y a quelques problèmes. La question clé est que, actuellement, les zones de liste modifiables dans chaque Ligne de grille de données ne sont pas de l'affichage de la AnswerDomain cordes. J'ai essayé une série de XAML combinaisons sans succès. M'aider à Débordement de Pile.

Mise à JOUR: La solution sélectionnée ci-dessous travaillé. Après quelques tâtonnement et par l'ajout de UpdateSourceTrigger=PropertyChanged à la SelectedItem, les modifications de l'utilisateur dans la zone de liste déroulante ont été ensuite renvoyée dans la sous-jacentes objet personnalisé.

<DataGridTemplateColumn Header="Answer">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ComboBox 
                ItemsSource="{Binding AnswerDomain}" 
                SelectedItem="{Binding Answer, UpdateSourceTrigger=PropertyChanged}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Cette réponse explique pourquoi vous ne pouvez pas lier DataGridComboBoxColumn à une dynamique de liaison de stackoverflow.com/a/5411157/158675

OriginalL'auteur Rox Wen | 2010-07-15