With triggers you can change the value of a given property, once a certain condition changes. Triggers come in multiple flavors: Property triggers, event triggers and data triggers. They allow you to do stuff that would normally be done in code-behind completely in markup instead, which is all a part of the ongoing process of separating style and code.
There is an article at WPF Tutorial called Trigger, DataTrigger & EventTrigger.
Below is a simple example that is based on that article with a couple of small modifications.
Here is the XAML code. There is no C# code behind for this project. We add a trigger, which listens to theIsMouseOver property – once this property changes to True, we apply a setters: We change the Foreground to red.
<Window x:Class="PropertyTrigger2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:PropertyTrigger2"
mc:Ignorable="d"
WindowStartupLocation="CenterScreen"
Title="Property Trigger 2" Height="120" Width="350">
<Grid Background="LemonChiffon">
<TextBlock Text="Property Triggers - IsMouseOver - Red" FontSize="18" HorizontalAlignment="Center"
VerticalAlignment="Center" TextDecorations="">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="Blue"></Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red" />
<Setter Property="TextDecorations" Value="" />
<Setter Property="Background" Value="LemonChiffon"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
</Window>
When the user places the mouse over the text it turns red, as you can see in the screenshot below.

