WPF: How do I set the Foreground property of a TextBlock using DataTrigger

datatrigger, foreground, textblock, wpf

Solution

Your triggers and setters need to be defined in a style, rather than on the TextBlock directly:

<TextBlock>
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Style.Triggers>

               <DataTrigger Binding="{Binding Severity}"> 
                   <DataTrigger.Value> 
                       <sm:Severity>Warning</sm:Severity> 
                   </DataTrigger.Value> 
                   <Setter TargetName="SeverityText" 
                           Property="Foreground" 
                           Value="Yellow" /> 
               </DataTrigger>

            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

Problem

This is my XAML: ``` <TextBlock Name="SeverityText" Grid.Column="1" Grid.Row="0" Foreground="Red"> <TextBlock.Triggers> <DataTrigger Binding="{Binding Path=Severity}"> <DataTrigger.Value> <sm:Severity>Warning</sm:Severity> </DataTrigger.Value> <Setter TargetName="SeverityText" Property="Foreground" Value="Yellow" /> </DataTrigger> <DataTrigger Binding="{Binding Path=Severity}"> <DataTrigger.Value> <sm:Severity>Information</sm:Severity> </DataTrigger.Value> <Setter TargetName="SeverityText" Property="Foreground" Value="White" /> </DataTrigger> </TextBlock.Triggers> <TextBlock>Severity:</TextBlock> <TextBlock Text="{Binding Path=Severity}" /> </TextBlock> ``` This is my error message: Cannot find the static member 'ForegroundProperty' on the type 'ContentPresenter'. sm:Severity is an enumeration I imported.

Original source