wpf 触发器对代码中设置的样式无效

wpf trigger not effective on style set in code

在 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 列中,我手动设置了前景

 Sub New()
        FontWeight = FontWeights.Bold
        Foreground = Brushes.Blue
 End Sub

当单元格被选中时,背景剂量会被触发器改变,但前景不会

我相信这是因为我在代码中设置了前景

我该怎么做才能解决这个问题?

注意:我无法为 xaml

中的列设置前景

Foreground = Brushes.Blue 您为前景依赖设置本地值 属性。本地值的优先级高于触发器中的 setter 值。我建议为 DataGridCell 创建一个命名样式,派生自 based 样式,并在代码中应用派生样式:

<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

由于缺乏 vb.net 知识,我正在使用 c# 语法。代码调用 DataGrid 的 FindResource 方法来检索 "BlueCell" 样式,并在转换为 Style 类型后将其分配给列的 CellStyle