DataGrid ComboBox第一次点击没有选中项

DataGrid ComboBox has no selected item when clicked the first time

最近我也问过类似的问题here and here,但未能正确解决问题。

我有一个带有 ComboBox 的 DataGrid,它可以包含或不包含 selected 项。但是,如果确实如此,那么当下拉菜单打开时,ComboBox 应该 select 它不是。

目前我有这段代码,但第一次打开下拉菜单时除外。没什么 selected.

 <DataGridTemplateColumn Header="Company">
     <DataGridTemplateColumn.CellEditingTemplate>
         <DataTemplate>
             <ComboBox ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=DataContext.Companies}" 
                       SelectedItem="{Binding Company, Converter={StaticResource NullValueConverter}}"/>
         </DataTemplate>
     </DataGridTemplateColumn.CellEditingTemplate>
     <DataGridTemplateColumn.CellTemplate>
     <DataTemplate>
         <TextBlock Text="{Binding Company, Converter={StaticResource NullValueConverter}}" />
      </DataTemplate>
   </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

如果公司是 nullNullValueConverter 可以防止异常。

  • 如果您的公司不是您在评论中提到的字符串,那么它无法显示名称,除非您设置 DisplayMemberPath="Name" 或创建一个 ItemTemplate。

  • 你应该使用SelectedItem="{Binding Company,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"来更新 价值一旦改变,因为如果你不这样做,它只会 当您关注另一个单元格或行时引发 ProperyChanged。

  • 如果您的 属性 是不可变的或值类型,那么您 应该使用 SelectedValue="{Binding Path=Company,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" SelectedValuePath="Content"

.