Вопрос. Большинство примеров кода в DataGridComboBox, похоже, используют статический ресурс в качестве ItemsSource. В моем случае использования я хотел бы предоставить разные ItemsSources для каждого связанного объекта. Можно ли это сделать?
Предпосылки: я пытаюсь привязать коллекцию объектов класса Question к WPF DataGrid с помощью элемента управления DataGridComboBoxColumn. Строка ответа предоставляет SelectedValue. Я бы хотел, чтобы список AnswerDomain содержал ItemsSource для каждого ComboBox. AnswerDomain отличается от вопроса к вопросу.
Класс
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>
Проблема. Есть пара проблем. Ключевой проблемой сейчас является то, что ComboBoxes в каждой строке 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>