我有一个
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>
答案 0 :(得分:0)
需要同时设置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
并对其进行引用。