DataGridTemplateColumn.CellEditingTemplate ComboBox не отображается, пока не будет нажат дважды - PullRequest
0 голосов
/ 20 июня 2019

У меня есть 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...