wpf - 触发时无法显示下划线

标签 wpf xaml triggers underline text-decorations

我有以下样式,但是当鼠标悬停触发器为真时,文本上不显示下划线。

<Style x:Key="HyperlinkToggleButtonStyle" TargetType="ToggleButton">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ToggleButton">
                <TextBlock x:Name="TextBlock">
                            <ContentPresenter Content="{TemplateBinding  Content}" ContentTemplate="{TemplateBinding  ContentTemplate}"/>
                </TextBlock>
            </ControlTemplate>
        </Setter.Value>
    </Setter>

    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="false">
            <Setter Property="Background" Value="{StaticResource StandardBackground}"/>
            <Setter Property="Foreground" Value="Black" />
            <Setter Property="FontSize" Value="12"/>
            <Setter Property="FontStyle" Value="Normal"/>
            <Setter Property="FontWeight" Value="Normal"/>                                         
        </Trigger>

        <Trigger Property="IsMouseOver" Value="true">
            <Setter Property="Background" Value="{StaticResource StandardBackground}"/>
            <Setter Property="Foreground" Value="{StaticResource StandardBlue}" />
            <Setter Property="Cursor" Value="Hand" />
            <Setter Property="FontSize" Value="12"/>
            <Setter Property="FontStyle" Value="Normal"/>
            <Setter Property="FontWeight" Value="Normal"/>
            <Setter Property="TextBlock.TextDecorations" Value="Underline"/>
        </Trigger>
    </Style.Triggers>
</Style>

最佳答案

这可能不是一个理想的解决方案,但您可以在控件模板中定义触发器。不要忘记使用 setter 上的 TargetName 属性引用您的 TextBlock。

    <Setter Property="Template">
        <Setter.Value>
           <ControlTemplate TargetType="ToggleButton">
              <TextBlock x:Name="TextBlock">
                        <ContentPresenter Content="{TemplateBinding  Content}" ContentTemplate="{TemplateBinding  ContentTemplate}"/>
              </TextBlock>
              <ControlTemplate.Triggers>
                 <Trigger Property="IsMouseOver" Value="true">
                    <Setter TargetName="TextBlock" Property="TextBlock.TextDecorations" Value="Underline"/>
                 </Trigger>
              </ControlTemplate.Triggers>
           </ControlTemplate>
        </Setter.Value>
     </Setter>

关于wpf - 触发时无法显示下划线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13751235/

相关文章:

wpf - 使用样式触发器设置嵌套对象的属性

mysql - 我想做一个合并三个表的mysql触发器可以吗

c# - 如何按类型获取 WPF 容器的子容器?

c# - 同时在多个位置使用从 ResourceDictionary 加载的 XAML Canvas

c# - 从任何窗口中删除 'Black Bar'

wpf - 如何使两个Viewbox中的文本大小相同?

c# - ObservableCollection 以及存储库

c# - BindingExpression 路径错误 : property not found on 'object'

mysql - 如何捕获 mysql 的触发器和存储过程中的任何异常?

mysql - SQL IF 语句中的正则表达式