wpf 在ComboBox选择后添加占位符DataGrid项

gupuwyp2  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(132)

我有一个WPF DataGrid,可以添加新行(CanUserAddRows="True")。我的一个专栏是ComboBox。通过下面的代码,我可以将数据绑定到这个ComboBox:

<DataGridTemplateColumn Header="Validator" MinWidth="150">
   <DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
         <ComboBox ItemsSource="{Binding DataContext.ValidatorVariables, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}, UpdateSourceTrigger=PropertyChanged}"
                      SelectedItem="{Binding SelectedValidatorVariable, UpdateSourceTrigger=PropertyChanged}"
                      IsEnabled="{Binding HasValidator, UpdateSourceTrigger=PropertyChanged}">

如果我首先在占位符行中选择一个ComboBox项,则不会从此占位符行创建新项。仅当我在文本列中进入编辑模式时,占位符行才会添加到项目源。复选框列也不起作用,只有文本列。
这会产生副作用:
1.选择组合框项
1.在文本列中进入编辑模式
结果:清除先前选择的ComboBox项
对于这种情况有什么解决方案吗?

mklgxw1f

mklgxw1f1#

任何输入控件,例如ComboBox,都应该放在单元格编辑模板中。CellTemplate应该包含一个显示当前选定值的TextBlock

<DataGridTemplateColumn Header="Validator" MinWidth="150">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding SelectedValidatorVariable}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ComboBox ... />
        </DataTemplate>
</DataGridTemplateColumn>

相关问题