C# 当按钮悬停时,如何为按钮的子项textblock加下划线

C# 当按钮悬停时,如何为按钮的子项textblock加下划线,c#,wpf,triggers,C#,Wpf,Triggers,我有以下风格 <Style x:Key="RoundedBtn" TargetType="{x:Type Button}"> <Setter Property="Background" Value="White"/> <Setter Property="BorderThickness" Value="1"/> <Setter Property="BorderBrush" Value

我有以下风格

 <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>

我将此样式应用于我的“usercontrol”(实际上是一个按钮):


生成项目时,“MyButton”出现在自定义控件中。但是如果我把它拖到我的表单上并测试它,文本下划线就不起作用了

但是,如果我在表单上放置一个普通按钮,然后应用RoundedBtn样式,它会工作,为什么


顺便说一句,我试图实现的是在Setter中使用一个类似于左菜单按钮的按钮:

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

整个样式如下所示(为了可读性,我删除了不相关的部分)



这正是我昨天所做的。对我来说,这似乎是答案,但我不知道为什么,它不起作用。我用actuel风格编辑了我的文章。请注意,它是在
ControlTemplate.Triggers
中定义的,而不是
style.Triggers
。代码在我的测试中起作用,当鼠标悬停在按钮上时,文本会加下划线。我想我编辑帖子的速度不够快,您看到了旧代码,请查看我编辑的代码。我已将触发器放入
ControlTemplate。触发器
但仍然不起作用。您的代码在我这边起作用:我需要硬编码TextBlock的文本,由于Button类中没有名为
ButtonText
的属性,所以我发现如果我在表单上放置一个简单的按钮并应用此样式,下划线就可以工作。我有一个名为MyButton的用户控件,它是一个按钮,我在上面应用了这种样式。因此,我有一个自定义的“MyButton”,作为一个常用控件,我只需在窗体上拖动它。但是那样做是行不通的。因此,我只需按下一个按钮,每次都应用样式,即使这不是我真正想要的。我已经编辑了我的帖子,向你展示了“我的按钮”控制代码。
<ControlTemplate.Triggers>
    <Trigger Property="IsMouseOver" Value="True" >
        <Setter TargetName="textBlock" Property="TextBlock.TextDecorations" Value="Underline" />
    </Trigger>
</ControlTemplate.Triggers>
<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>