看下面的情况有多奇怪:
<DataGrid.Columns>
<!--Doesn't work-->
<DataGridComboBoxColumn
Header="Vendor"
ItemsSource="{Binding Vendors}"
SelectedItemBinding="{Binding Vendor,
UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Contact.Title"/>
<!--Works-->
<DataGridTemplateColumn Header="Vendor">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock DataContext="{Binding Vendor}"
Text="{Binding Contact.Title}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Vendors}"
SelectedItem="{Binding Vendor, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Contact.Title"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
答案 0 :(得分:2)
我向Microsft发布了connection。
微软向我解释说,由于DataGridComboBoxColumn的ItemsSource属性的常见用法是将它绑定到StaticResource或任何其他对每行没有不同的资源,所以使用DataGrid计算一次,而不是每行,所以为了分别更新每一行的ItemsSource,一个DataGridTemplateColumn和一个内部ComboBox,这一个的ItemsSource确实每行绑定。