我有一个 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>
需要同时设置CellEditingTemplate
和CellTemplate
。如下所示:
'
<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
并引用它。