我正在使用 WPF4.0 DataGrid。双击新行中的单元格时,一切正常除非我已向该列添加了单元格样式。例如,我有一个数字列,我希望数据右对齐,因此 xaml 看起来像这样
<DataGridTextColumn Binding="{Binding Path=ImpaId}"
CellStyle="{StaticResource CellRightAlign}">
<DataGridTextColumn.Header>
<TextBlock Style="{StaticResource DataGridHeader}">Impa</TextBlock>
</DataGridTextColumn.Header>
</DataGridTextColumn>
共享资源中的样式只是:
<Style x:Key="CellRightAlign">
<Setter Property="Control.HorizontalAlignment"
Value="Right" />
</Style>
新行上生成的可选区域在图像中显示为小蓝色区域。这是用户要点击的非常小的目标,而这恰好是他们最有可能想要开始的列一个新行。
如果我删除 CellStyle,该区域将按预期工作,但当然我会失去正确的对齐方式。
有谁知道如何实现这两者吗?
我尝试过的事情
- 将绑定(bind)上的 TargetNullValue 设置为具有一定宽度的格式。 这适用于现有行,但对新行没有影响。
- 在列上设置 MinWidth,这不会影响新可选行的宽度 面积。
有效的方法:
使用 @AngelWPF 的答案中的信息,我能够从使用 CellStyle 更改为使用 ElementStyle,如下所示:
<DataGridTextColumn Binding="{Binding Path=ImpaId}"
CellStyle="{StaticResource CellRightAlign}">
成为
<DataGridTextColumn Binding="{Binding Path=ImpaId}"
ElementStyle="{StaticResource CellRightAlign}">
最佳答案
您可以在目标为 TextBlock
的 DataGridTextColumn
上应用 ElementStyle
并将其右对齐,这样就可以了。
<DataGridTextColumn Binding="{Binding Path=ImpaId}">
<DataGridTextColumn.Header>
<TextBlock Style="{StaticResource
DataGridHeader}">
Impa
</TextBlock>
</DataGridTextColumn.Header>
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="HorizontalAlignment" Value="Right" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
关于wpf - 如何使 WPF DataGrid 单元格右对齐而不使新行上的可选区域变小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7800367/