问题: 大多数关于DataGridComboBox的代码示例似乎使用静态资源作为ItemsSource。在我的用例中,我希望为每个绑定对象提供不同的ItemsSources。这可行吗?
背景: 我正在尝试将Question类对象的集合绑定到WPF DataGrid,使用DataGridComboBoxColumn控件,其中Answer字符串提供了SelectedValue。我希望AnswerDomain列表为每个ComboBox提供ItemsSource。AnswerDomain因Question而异。
类
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中的ComboBox没有显示AnswerDomain字符串。我已经尝试了一系列XAML组合,但没有成功。请Stack Overflow帮帮我。
更新: 下面选择的解决方案有效。在进一步摸索并将 UpdateSourceTrigger=PropertyChanged
添加到SelectedItem 后,用户对ComboBox的更改会反映在基础自定义对象中。
<DataGridTemplateColumn Header="Answer">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
ItemsSource="{Binding AnswerDomain}"
SelectedItem="{Binding Answer, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>