Вопрос : Большинство примеров кода в DataGridComboBox, похоже, используют статический ресурс в качестве ItemsSource. В моем случае я хотел бы предоставить разные ItemsSources для каждого связанного объекта. Можно ли это сделать?
Справочная информация : я пытаюсь связать коллекцию объектов класса Question с WPF DataGrid, используя элемент управления DataGridComboBoxColumn. Строка ответа предоставляет SelectedValue. Я хотел бы, чтобы список AnswerDomain предоставлял ItemsSource для каждого ComboBox. Домен ответа отличается от вопроса к вопросу.
Класс
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>
Проблема : Есть пара проблем. Ключевая проблема сейчас заключается в том, что ComboBox в каждой строке DataGrid не отображают строки AnswerDomain. Я попробовал серию комбинаций XAML без успеха. Помоги мне переполнить стек.
ОБНОВЛЕНИЕ: Выбранное решение работает ниже. После некоторой дальнейшей неуклюжести и добавления UpdateSourceTrigger=PropertyChanged
к SelectedItem пользовательские изменения в выпадающем списке затем отражались обратно в базовый пользовательский объект.
<DataGridTemplateColumn Header="Answer">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
ItemsSource="{Binding AnswerDomain}"
SelectedItem="{Binding Answer, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>