在Resources.Xaml中,我从Datagrid Cell
设置了一个样式<Style TargetType="DataGridCell" >
<Style.Triggers>
<Trigger Property="DataGridCell.IsSelected" Value="True">
<Setter Property="Background" Value="CornflowerBlue" />
<Setter Property="Foreground" Value="White" />
</Trigger>
</Style.Triggers>
</Style>
在特定的DataGrid列中我手动设置Foreground
Sub New()
FontWeight = FontWeights.Bold
Foreground = Brushes.Blue
End Sub
当选择单元格时,触发器会改变背景剂量,但前景不会
我相信这是因为我在代码中设置了forground
我该怎么做才能解决这个问题?
注意:我无法为xaml
中的列设置foregroud答案 0 :(得分:1)
编写Foreground = Brushes.Blue
为Foreground依赖项属性设置本地值。本地值的优先级高于Trigger的setter值。我建议为DataGridCell创建一个命名样式,从基于样式派生,并在代码中应用派生样式:
<Style TargetType="DataGridCell" >
<Style.Triggers>
<Trigger Property="DataGridCell.IsSelected" Value="True">
<Setter Property="Background" Value="CornflowerBlue" />
<Setter Property="Foreground" Value="White" />
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="BlueCell" TargetType="DataGridCell" BasedOn="{x:Type DataGridCell}">
<Setter Property="Foreground" Value="Blue" />
<Setter Property="FontWeight" Value="Bold" />
</Style>
Sub
CellStyle = (Style)datagrid.FindResource("BlueCell");
End Sub
我正在使用c#语法,因为我缺乏vb.net知识。代码调用DataGrid的FindResource
方法来检索“BlueCell”样式,并在转换为Style
类型后将其分配给列的CellStyle