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>