在WPF中工作我有一个带有3个文本列的简单DataGrid
我的初始版本是使用DataGridTextColumn
制作的<DataGrid ...>
<DataGrid.Columns>
<DataGRidTextColum ... />
<DataGRidTextColum ... />
<DataGRidTextColum ... />
</DataGrid.Columns>
</DataGrid>
默认行为是当用户点击进行编辑时,“单元格内容”将成为可编辑的文本框。 但是,此TextBox不如单元格宽。
目前,我可以使用DataGridTemplateColumn解决这个问题,然后使用TextBox显示查看和编辑的内容。
但是,我希望找到一个很好的解决方案,只需设置编辑时使用的默认TextBox的样式。
当Cell在EditMode中使用我的属性时,我无法找到如何定位TextBox的语法。 我想将宽度设置为Cell的100%。
是否有人建议如何在WPF中完成此操作?
编辑#1
Icebat通知我,标准行为是填充整个宽度。
这是我的代码,显示了这个问题
<DataGridTextColumn Binding="{Binding Path=Status}"
CanUserReorder="False"
CanUserResize="False"
CanUserSort="True"
Width="Auto"
IsReadOnly="True"
MinWidth="100"
Header="Status"
CellStyle="{StaticResource VerticalCenterAlignDataGridCellStyle}"
/>
我猜它也可能与Style相关,但我没有任何样式在没有Key的情况下定位TextBox。
答案 0 :(得分:1)
您的应用程序中有一些样式会导致TextBox不能伸展以适应单元格的整个宽度,因为这不是默认行为。
无论如何,您可以将列的EditingElementStyle属性设置为TextBox样式以更改TextBox的样式:
<DataGridTextColumn Binding="{Binding Prop}">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="Background" Value="Yellow" />
</Style>
</DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>
如果这不起作用,可能会有一些自定义的CellStyle引起问题。你也可以覆盖这个:
<DataGridTextColumn Binding="{Binding Prop}" Width="400">
<DataGridTextColumn.EditingElementStyle>
<Style TargetType="TextBox">
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="Background" Value="Yellow" />
</Style>
</DataGridTextColumn.EditingElementStyle>
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>