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>
OriginalL'auteur Rox Wen | 2010-07-15
Vous devez vous connecter pour publier un commentaire.
Votre problème est que l'affichage des membres de chemin d'accès n'est pas Répondre, car il n'y a pas de "Réponse", propriété d'une chaîne. Je n'ai jamais utiliser le DataGridComboBoxColumn, il ne semble pas naturel pour moi, trop semblable à l'ancienne gagner des formes. Essayez-le en dessous de la place. MAIS ASSUREZ-VOUS d'IMPLÉMENTER INotifyPropertyChanged sur votre Question à la Classe, et le feu les événements appropriés.
Ici est de savoir comment votre Question de classe devrait ressembler à:
OriginalL'auteur viggity