我使用的是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>
新行上的结果可选区域在图像中显示为小的蓝色area.This是用户要命中的一个非常小的目标,而这恰好是用户希望从新行开始的最可能的列。
如果我删除CellStyle,区域就会正常工作,但当然我会失去正确的对齐方式。
有谁知道如何实现这两个目标吗?
我试过的东西
有效的方法:
使用@AngelWPF的答案中的信息,我能够从使用CellStyle改为使用ElementStyle,如下所示:
<DataGridTextColumn Binding="{Binding Path=ImpaId}"
CellStyle="{StaticResource CellRightAlign}">
变成了
<DataGridTextColumn Binding="{Binding Path=ImpaId}"
ElementStyle="{StaticResource CellRightAlign}">
发布于 2011-10-18 15:16:02
您可以在针对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>
发布于 2016-02-24 15:21:05
只是想为将来的代码搜索添加更多的示例。
我将这段代码放在xaml文件的顶部:
<UserControl.Resources>
<Style TargetType="{x:Type TextBlock}" x:Key="RightCell">
<Setter Property="Background" Value="{Binding Included, Converter={StaticResource BoolToColorConverter}}"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="TextAlignment" Value="Right"/>
</Style>
</UserControl.Resources>
然后在数据网格中:
<DataGridTextColumn Header="Excluded" Binding="{Binding Excluded}" ElementStyle="{StaticResource RightCell}"/>
这会右对齐文本,并且排序仍处于启用状态。文本框填充单元格,在本例中使用布尔转换器进行着色。
发布于 2011-10-18 06:46:48
您可以尝试一种变通方法:
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid Background="White" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<TextBlock HorizontalAlignment="Right" Text="{Binding Path=ImpaId}"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
https://stackoverflow.com/questions/7800367
复制相似问题