Domanda: la maggior parte degli esempi di codice su DataGridComboBox sembra utilizzare una risorsa statica come ItemsSource. Nel mio caso d'uso, mi piacerebbe fornire diversi ItemsSources con ciascun oggetto associato. Questo può essere fatto?Binding the ItemsSource per una colonna WPF DataGridComboBox
Sfondo: Sto cercando di legare una collezione di oggetti di classe domanda a un WPF DataGrid, utilizzando un controllo DataGridComboBoxColumn. La stringa di risposta fornisce il valore selezionato. Mi piacerebbe che l'elenco AnswerDomain fornisse gli ItemsSource per ogni ComboBox. AnswerDomain differisce da domanda a domanda.
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>
Problema: Ci sono un paio di problemi. Il problema chiave in questo momento è che i ComboBox in ciascuna riga DataGrid non visualizzano le stringhe AnswerDomain. Ho provato una serie di combinazioni XAML senza successo. Aiutami Stack Overflow.
UPDATE: La soluzione selezionata sotto funzionava. Dopo un po 'di confusione e aggiungendo UpdateSourceTrigger=PropertyChanged
a SelectedItem, le modifiche dell'utente nella casella combinata sono state quindi riflesse nell'oggetto personalizzato sottostante.
<DataGridTemplateColumn Header="Answer">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
ItemsSource="{Binding AnswerDomain}"
SelectedItem="{Binding Answer, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Questa risposta spiega il motivo per cui non è possibile associare DataGridComboBoxColumn ad una dinamica vincolante - http://stackoverflow.com/a/5411157/158675 – Edward