我有一个带有ComboBox的DataGrid,它可以包含所选项目。但如果确实如此,那么当下拉列表打开时,ComboBox应该选择它。
目前我有这个代码,除了第一次打开下拉列表时才有效。没有选择。
<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>
如果公司为NullValueConverter
,则null
会阻止例外情况。
答案 0 :(得分:2)
如果您的公司不是您在评论中提到的字符串,则除非您设置,否则它无法显示名称
DisplayMemberPath="Name"
或创建一个ItemTemplate。
您应该使用SelectedItem="{Binding
Company,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
进行更新
价值一改变,因为如果你不改变它
当您聚焦另一个单元格或行时,请提升ProperyChanged。
如果您的属性是不可变的或值类型,那么您
应该使用SelectedValue="{Binding Path=Company,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" SelectedValuePath="Content"