如果网格单元格的背景颜色为红色,我的要求是将前景色更改为白色。
我在下面的模板中使用了单元格。但是,它没有触发。
<DataTemplate x:Key="NumericThreeDecimalCellTemplate">
<TextBlock HorizontalAlignment="Right"
VerticalAlignment="Center">
<TextBlock.Text>
<Binding Path="Value"
StringFormat="###,###,###,###,###,###,##0.000;(###,###,###,###,###,###,##0.000)" />
</TextBlock.Text>
<TextBlock.Foreground>
<Binding Path="Value"
Converter="{StaticResource negativeToBrushConvertor}" />
</TextBlock.Foreground>
</TextBlock>
<DataTemplate.Resources>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Background.Color,RelativeSource={RelativeSource Mode=Self}}" Value="#FF0000">
<Setter Property="Foreground" Value="White" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataTemplate.Resources>
</DataTemplate>`
如果我做错了,请告诉我。
答案 0 :(得分:0)
本地值(例如您的negativeToBrushConverter
返回的值)优先于样式设置器设置的值:https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/dependency-property-value-precedence
因此,无论您将Foreground
属性设置为Style
,都不会被应用,除非您删除此部分:
<TextBlock.Foreground>
<Binding Path="Value" Converter="{StaticResource negativeToBrushConvertor}" />
</TextBlock.Foreground>
您应该在Foreground
中为Style
属性设置默认值。您应该将AncestorType
的{{1}}设置为您的单元格的属性:
{RelativeSource}