问题:DataGridComboBox 上的大多数代码示例似乎都使用静态资源作为 ItemsSource。在我的用例中,我想为每个绑定对象提供不同的 ItemsSources。 这可以做到吗?
背景:我正在尝试使用 DataGridComboBoxColumn 控件将 Question 类对象的集合绑定到 WPF DataGrid。Answer 字符串提供 SelectedValue。我希望 AnswerDomain 列表为每个 ComboBox 提供 ItemsSource。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>
问题:有几个问题。现在的关键问题是每个 DataGrid 行中的 ComboBoxes 不显示 AnswerDomain 字符串。我尝试了一系列 XAML 组合但没有成功。帮助我堆栈溢出。
更新: 下面选择的解决方案有效。在进一步摸索并添加UpdateSourceTrigger=PropertyChanged
到 SelectedItem 之后,组合框中的用户更改然后反映在底层自定义对象中。
<DataGridTemplateColumn Header="Answer">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
ItemsSource="{Binding AnswerDomain}"
SelectedItem="{Binding Answer, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>