Вопрос: Большинство образцов кода в DataGridComboBox, похоже, используют статический ресурс как ItemsSource. В моем случае использования я хотел бы предоставить различные ItemsSources каждому связанному объекту. Можно ли это сделать?Binding the ItemsSource для WPF DataGridComboBox Column
фон: Я пытаюсь связать коллекцию объектов класса Вопрос к в 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>
Этот ответ объясняет, почему вы не можете связать DataGridComboBoxColumn с динамического связывания - http://stackoverflow.com/a/5411157/158675 – Edward