首页 > 解决方案 > DataGridTemplateColumn.CellEditingTemplate ComboBox 在单击两次之前不显示

问题描述

DataGridTemplateColumn.CellEditingTemplateDataGrid. 发生的事情是我可以看到所选项目,但ComboBox直到我单击它两次以启用编辑时才看到。

基本上,我希望它表现得像 aCellTemplate但可以像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>

标签: wpfdatagrid

解决方案


需要同时设置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在资源中包含并引用它。


推荐阅读