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

问题描述 投票:0回答:1

我有一个 WPF DataGrid,可以添加新行 (

CanUserAddRows="True"
)。我的专栏之一是组合框。使用以下代码,我可以将数据绑定到此 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}">

如果我首先在占位符行中选择一个组合框项目,则不会从此占位符行创建新项目。仅当我在文本列中进入编辑模式时,占位符行才会添加到项目源中。复选框列也不起作用,只有文本列。

这会导致副作用:

  1. 选择组合框项目
  2. 在文本列中进入编辑模式

结果:先前选择的 ComboBox 项目被清除

这种情况有什么解决办法吗?

wpf combobox
1个回答
0
投票

任何输入控件,例如

ComboBox
,都应该放在 CellEditingTemplate 中。
CellTemplate
应包含显示当前所选值的
TextBlock

<DataGridTemplateColumn Header="Validator" MinWidth="150">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding SelectedValidatorVariable}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ComboBox ... />
        </DataTemplate>
</DataGridTemplateColumn>
© www.soinside.com 2019 - 2024. All rights reserved.