我想在WPF DataGrid中覆盖所选DataGrid Line的前景色。
Foreach列前景在定义中设置。
<DataGrid.Columns><DataGridTextColumn Foreground="Black"/>
我创建了一个新的DataGridCell样式。但这仅适用于未设置前景色的列。
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="BlueViolet" />
<Setter Property="Foreground" Value="White" />
</Trigger>
</Style.Triggers>
</Style>
答案 0 :(得分:1)
在WPF中,有一种称为Dependency Property Value Precedence的东西。请按照链接获取完整的详细信息,但简而言之,DependencyProperty
可以从许多不同的来源更新:Animation
s,样式,代码隐藏等。有一个列表(在链接页面)命令所有这些来源从最重要到最不重要。
更重要的来源优先于不太重要的来源,可以改变不太重要的来源设定的价值。
<DataGridTextColumn Foreground="Black" />
在上面的代码中,Foreground
属性是内联设置的,因此它的优先级为 Local值,高于 Style触发器 EM>。因此,Trigger Setter
无法改变“{1}}更重要的内容。您设置为内联的值。
解决方案很简单...使用优先级较低的源设置初始值,例如样式设置器。但是,现在您遇到的问题是DataGridTextColumn
不是常规FrameworkElement
,因此没有Style
属性。幸运的是,您应该可以使用CellStyle
属性:
<DataGridTextColumn ... >
<DataGridTextColumn.CellStyle>
<Style>
<Setter Property="Foreground" Value="Black"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>