我正在使用 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>
图中显示了新行的可选择区域,它是一个非常小的蓝色区域。这对用户来说是一个非常小的目标,在新行上,这恰好是他们最可能想要开始的列。
如果我删除单元格样式,该区域将按预期工作,但我会失去正确的对齐方式。
有人知道如何同时实现这两个效果吗?
我尝试过的事情
- 将绑定的TargetNullValue设置为具有某些宽度的格式。这在现有行上有效,但对新行没有效果。
- 在列上设置MinWidth,但它不会影响新行可选择区域的宽度。
成功的方法:
根据@AngelWPF的回答,我能够改为使用ElementStyle而不是CellStyle,具体操作如下:
<DataGridTextColumn Binding="{Binding Path=ImpaId}"
CellStyle="{StaticResource CellRightAlign}">
成为。<DataGridTextColumn Binding="{Binding Path=ImpaId}"
ElementStyle="{StaticResource CellRightAlign}">