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への接続を投稿しました。

Microsoft は、DataGridComboBoxColumn の ItemsSource プロパティの一般的な使用法は、それを StaticResource または行ごとに異なる他のリソースにバインドすることであるため、行ごとではなく、DataGrid で 1 回評価されると説明しました。各行の ItemsSource を個別に更新するには、DataGridTemplateColumn と、この ItemsSource が行ごとにバインドする内部 ComboBox を使用します。

于 2010-07-22T04:20:22.493 に答える