WPF:DataTrigger未在DataTemplate内触发
我的要求是,如果网格单元的背景颜色是红色,则将前景颜色更改为白色 我正在使用下面的单元格模板。但是,它不会触发WPF:DataTrigger未在DataTemplate内触发,wpf,triggers,datatemplate,Wpf,Triggers,Datatemplate,我的要求是,如果网格单元的背景颜色是红色,则将前景颜色更改为白色 我正在使用下面的单元格模板。但是,它不会触发 <DataTemplate x:Key="NumericThreeDecimalCellTemplate"> <TextBlock HorizontalAlignment="Right" VerticalAlignment="Center"> <TextBlock.Text>
<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>`
`
如果我做错了什么,请告诉我。本地值(如
negativeToBrushConverter
返回的值)优先于样式设置器设置的值:
因此,无论您在样式中将前台
属性设置为什么,都不会应用它,除非您删除此部分:
<TextBlock.Foreground>
<Binding Path="Value" Converter="{StaticResource negativeToBrushConvertor}" />
</TextBlock.Foreground>
在这种情况下,“网格单元”是什么?我使用的是Devexpress gridControl。GridColumn的CellTemplate属性绑定到此datatemplate。感谢您的及时回复。但是,它仍然不起作用。我试着注释negativeToBrushConvertor,但datatrigger仍然没有触发。我按照你的建议使用了ancestorType。
<DataTemplate>
<TextBlock HorizontalAlignment="Right" VerticalAlignment="Center">
<TextBlock.Text>
<Binding Path="Value" StringFormat="###,###,###,###,###,###,##0.000;(###,###,###,###,###,###,##0.000)" />
</TextBlock.Text>
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground">
<Setter.Value>
<Binding Path="Value" Converter="{StaticResource negativeToBrushConvertor}" />
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Background.Color,RelativeSource={RelativeSource AncestorType=dxg:GridCellContentPresenter}}" Value="#FF0000">
<Setter Property="Foreground" Value="White" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>