DataGridTemplateColumn.CellEditTemplate ComboBox在单击两次后不会显示



我有一个 DataGridTemplateColumn.CellEditingTemplate 列在DataGrid 中。发生的事情是,我可以看到所选项目,但在单击两次以启用编辑之前,我看不到ComboBox

基本上,我希望它的行为像CellTemplate但可以像CellEditingTemplate一样编辑。我怎样才能做到这一点?

我更喜欢Xaml而不是代码的解决方案。

我尝试为DataGridCell设置Style.Trigger,如下所示

<Style TargetType="DataGridCell">
        <Style.Triggers>
            <Trigger Property="HasContent" Value="True">
                <Setter Property="IsEditing" Value="True" />
            </Trigger>
        </Style.Triggers>
    </Style>

还尝试将组合框是可编辑属性设置为 True

<DataGridTemplateColumn Header="Material" MinWidth="100">
        <DataGridTemplateColumn.CellEditingTemplate>
            <DataTemplate>
                <ComboBox IsEditable="True" DisplayMemberPath="Code" SelectedItem="{Binding Path=Material,Mode=TwoWay}" ItemsSource="{Binding Source={x:Reference MaterialDef}}"/>
            </DataTemplate>
        </DataGridTemplateColumn.CellEditingTemplate>
    </DataGridTemplateColumn>

代码非常简单

<DataGridTemplateColumn MinWidth="200" Header="Material" >
        <DataGridTemplateColumn.CellEditingTemplate>
            <DataTemplate>
                <ComboBox MinWidth="200" SelectedValuePath="{Binding Path=Material,Mode=TwoWay}" HorizontalAlignment="Right" Grid.Row="1" Grid.Column="2" DisplayMemberPath="Code" ItemsSource="{Binding Source={x:Reference Materials}}" Margin="2" />
            </DataTemplate>
        </DataGridTemplateColumn.CellEditingTemplate>
    </DataGridTemplateColumn>

需要同时设置CellEditingTemplateCellTemplate。如下所示:

'

<DataGridTemplateColumn MinWidth="200" Header="Material" >
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
        <ComboBox MinWidth="200" SelectedValuePath="{Binding Path=Material,Mode=TwoWay}" HorizontalAlignment="Right" Grid.Row="1" Grid.Column="2" DisplayMemberPath="Code" ItemsSource="{Binding Source={x:Reference Materials}}" Margin="2" />
    </DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <ComboBox MinWidth="200" SelectedValuePath="{Binding Path=Material,Mode=TwoWay}" HorizontalAlignment="Right" Grid.Row="1" Grid.Column="2" DisplayMemberPath="Code" ItemsSource="{Binding Source={x:Reference Materials}}" Margin="2" />
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

'

您还可以在资源中包含DataTemplate并引用它。

最新更新