我正在尝试更改WPF DataGrid控件的选定单元格的样式。
样式DataGridCell
和DataGridRow
之间有什么区别?我在下面尝试了各种组合,它们都有效。但是,我似乎只需要设置样式 DataGridCell
或DataGridRow
。
两者的目的是什么?这告诉我,我误解了他们的目的。
DataGridCell
的样式:(在我自己的代码中,我更改默认值中的颜色)
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
<Setter Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
</Style.Triggers>
</Style>
DataGridRow
的样式:(在我自己的代码中,我更改默认值中的颜色)
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
<Setter Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
</Style.Triggers>
</Style>
答案 0 :(得分:3)
DataGridRow将应用于整个Row。如果要设置整行的任何属性,可以使用DataGridRow。
每个DataGridRow都包含DataGridCell列表。您也可以为其定义样式。如果你不这样做,它将占用DataGridRow的样式。
通常,我们指定后者来定义两个相邻单元格之间的区别,例如指定单元格,边框等之间的边距。
答案 1 :(得分:2)
@abhishek说...... 我有一种情况,我需要使用行样式和单元格样式 这是我的行样式
<!-- Row Style-->
<Style x:Key="RowStyle" TargetType="{x:Type dg:DataGridRow}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="Red"/>
<Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors).CurrentItem.ErrorContent}"/>
</Trigger>
</Style.Triggers>
</Style>
然后我选择时需要特定的细胞为白色背景 我用了
<Style x:Key="TimeCell" TargetType="{x:Type dg:DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="White"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="BorderBrush" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
</Trigger>
</Style.Triggers>
</Style>
并为特定列指定样式
<dg:DataGridTemplateColumn Width="120" CellStyle="{StaticResource TimeCell}">
我希望很清楚我想说的是什么