直到单击两次,DataGridTemplateColumn.CellEditingTemplate组合框才会显示

时间:2019-06-20 05:25:16

标签: wpf datagrid

我有一个 DataGridTemplateColumn.CellEditingTemplate DataGrid中的列。发生的是,直到我单击两次以启用“编辑”,我才能看到所选项目,但看不到ComboBox

基本上,我希望它的行为类似于CellTemplate,但可以像CellEditingTemplate一样进行编辑。我该如何实现?

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

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

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

还尝试将ComboBox IsEditable属性设置为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>

1 个答案:

答案 0 :(得分:0)

需要同时设置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并对其进行引用。