2

看看下面的场景有多奇怪:

<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>
4

1 回答 1

2

我发布了与Microsft的连接。

微软向我解释说,由于 DataGridComboBoxColumn 的 ItemsSource 属性的常见用途是将其绑定到 StaticResource 或任何其他对每一行没有不同的资源,因此它使用 DataGrid 评估一次,而不是每行,所以为了分别更新每一行的 ItemsSource,一个 DataGridTemplateColumn 和一个内部 ComboBox,这个 ItemsSource 每行都绑定。

于 2010-07-22T04:20:22.493 回答