プログラム、スタック・オーバーフロー共に初心者です。
記述するべき内容が不足していたら申し訳ありません。
どんどんマサカリを投げていただけるとありがたいです。

環境

・Microsoft Visual Studio 2013 Express for Windows
・.NET Framework 4.5.1
・C# 5.0


現在の動き

xamlで、IconつきButtonとHyperlinkつきTextboxをStackpanelで並べています。
Textboxはマウスカーソルが乗るとテキストに下線が表示され、
マウスカーソルが外れると下線が消えるようにしています。

やりたい事

Buttonにマウスカーソルが乗ると右にあるテキストに下線を表示し、
マウスカーソルが外れると下線が消えるようにしたいです。


ソース

・xaml

    <UserControl.Resources>
        <ResourceDictionary>
            <Style TargetType="TextBlock" BasedOn="{StaticResource DefaultDialogTextStyleKey}">
                <Setter Property="Margin" Value="10,0,0,0"/>
            </Style>

            <Style TargetType="TextBox" BasedOn="{StaticResource DefaultTextBoxStyleKey}"/>
            <Style TargetType="Button" BasedOn="{StaticResource DialogButtonStyle}">
                <Setter Property="Height" Value="32"/>
                <Setter Property="Width" Value="32"/>
                <Setter Property="Margin" Value="0,2,0,2"/>
            </Style>

            <Style x:Key="BaseStackPanel" TargetType="StackPanel">
                <Setter Property="Orientation" Value="Horizontal"/>
            </Style>

            <Style TargetType="Hyperlink">
                <Setter Property="TextDecorations" Value="None"/>
            </Style>
        </ResourceDictionary>
    </UserControl.Resources>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <Grid Grid.Column="0" Grid.Row="1" Margin="10,0,0,10">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>

            <StackPanel Grid.Row="0" Grid.Column="0">
                <StackPanel Style="{StaticResource BaseStackPanel}">
                    <Button Command="{Binding ListViewCommand}">
                        <Image Source="{StaticResource Icon}"/>
                    </Button>
                    <TextBlock Width="120">
                        <Hyperlink Command="{Binding ListViewCommand}"
                                   MouseEnter="OnMouseEnter" MouseLeave="OnMouseLeave">
                                   Test
                        </Hyperlink>
                    </TextBlock>
                    <TextBlock Text="テストです。"/>
                </StackPanel>
            </StackPanel>
            <!--以下同じようなスタックパネルが数個続く-->
        </Grid>
    </Grid>
</UserControl>

・C#

 public MasterRegisterView()
{
    InitializeComponent();
}

private void OnMouseEnter(object sender, MouseEventArgs e)
{
    var hLink = new Hyperlink();
    if (sender.GetType() == hLink.GetType())
    {
        hLink = (Hyperlink)sender;
        hLink.TextDecorations = TextDecorations.Underline;

        Mouse.OverrideCursor = Cursors.Hand;
        Mouse.UpdateCursor();
    }
}

private void OnMouseLeave(object sender, MouseEventArgs e)
{
    var hLink = new Hyperlink();
    if (sender.GetType() == hLink.GetType())
    {
        hLink = (Hyperlink)sender;
        hLink.TextDecorations = null;

        Mouse.OverrideCursor = null;
        Mouse.UpdateCursor();
    }
}

何が実装可能なのか、何がスマートで理想的な記述方法なのかも分かりません。
//最初に思いついた実装がタイトルの内容です。(ButtonのMouseEnterイベントでTextboxのMouseEnterイベントを起こす)
//Button用のMouseEnterイベントをC#で実装する?
//triggerを使う?
//xamlだけで出来るのでしょうか?

簡単そうなのですが上手い実装方法が思いつかず、質問させていただきました。
ネットで調べてもピンと来ず…頭が固いです。
ご教授お願い致します。