【发布时间】:2011-03-16 11:09:16
【问题描述】:
问题: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>
【问题讨论】:
-
这个答案解释了为什么不能将 DataGridComboBoxColumn 绑定到动态绑定 - stackoverflow.com/a/5411157/158675
标签: c# .net wpf datagrid datagridcomboboxcolumn