Q:

How to underline textblock which is a child of a button when button is hovered

I have the following style
 <Style x:Key="RoundedBtn" TargetType="{x:Type Button}">
            <Setter Property="Background" Value="White"/>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="BorderBrush" Value="{x:Null}"/>

            <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type Button}">
                        <Border x:Name="button" CornerRadius="5"  Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                            <Grid>
                                <Image x:Name="image" Source="{Binding ButtonImage, RelativeSource={RelativeSource AncestorType=Button}}" Margin="0,2,0,3" HorizontalAlignment="Left" Width="40" />
                                <Border BorderBrush="{x:Null}"  Height="16" Margin="45,15,0,14"  Width="123" HorizontalAlignment="Left">
                                    <TextBlock x:Name="textBlock" Margin="-1" TextWrapping="Wrap" Text="{Binding ButtonText, RelativeSource={RelativeSource AncestorType=Button} }"
                                               FontSize="13"  
                                               FontFamily="{DynamicResource Helvetica}" VerticalAlignment="Center" TextDecorations="{x:Null}">
                                    </TextBlock>
                                </Border>
                            </Grid>
                        </Border>
                            <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter Property="BorderBrush" Value="#8da0aa"></Setter>
                                <Setter Property="Foreground" Value="#318EE4"></Setter>
                                <Setter TargetName="textBlock" Property="TextBlock.TextDecorations" Value="Underline">
                                <!--That Text decoration part doesnt work--></Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                    </Setter.Value>
                </Setter>

        </Style>

I apply this style to my "usercontrol" (which is actually a button):
<Button x:Name="btn" x:Class="MyStock.MyButton"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        mc:Ignorable="d" Height="45" Width="183" Style="{DynamicResource RoundedBtn}" />

When I generate the project, the "MyButton" appears in my custom controls. But if I drag it on my form and test it, the Text Underline doesnt work.
But If i put a normal button on my form and then apply the RoundedBtn style, it works, why ?
By the way, what I am trying to achieve is to have a button that looks like the left menu buttons on this page

A:

Use TargetName in the Setter:
<ControlTemplate.Triggers>
    <Trigger Property="IsMouseOver" Value="True" >
        <Setter TargetName="textBlock" Property="TextBlock.TextDecorations" Value="Underline" />
    </Trigger>
</ControlTemplate.Triggers>

The whole style looks like this (I remove irrelevant part for readability) 
<Style x:Key="RoundedBtn" TargetType="{x:Type Button}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Border x:Name="button">
                    <Grid>
                        <Border>
                            <TextBlock x:Name="textBlock" Margin="-1" TextWrapping="Wrap" Text="ABC"
                                           FontSize="13" TextDecorations="{x:Null}">

                            </TextBlock>
                        </Border>
                    </Grid>
                </Border>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True" >
                        <Setter TargetName="textBlock" Property="TextBlock.TextDecorations" Value="Underline" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

