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
在 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