【问题标题】:WPF TextBlock Style Underline on Mouse Hover鼠标悬停时的 WPF TextBlock 样式下划线
【发布时间】:2012-11-07 18:22:04
【问题描述】:

简单的问题。下面的 WPF C# 代码可以减轻一些重量吗?我的意思是,WTF,呃......我的意思是 WPF,来一个。大家都看过 CSS 吗?当我像链接一样悬停鼠标时,我只想在文本下划线。我真的需要为此添加 9 行吗?

<TextBlock x:Name="Cassette_tblPrintLabel" Text="Print Label" Canvas.Left="154" Canvas.Top="215" Foreground="#FF3355FF" Cursor="Hand" MouseDown="Cassette_lblPrintLabel_MouseDown">
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="TextBlock.TextDecoration" Value="Underline" />
            </Trigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

提前致谢!

【问题讨论】:

  • 您是想写TextBlock.TextDecoration 还是应该写成TextBlock.TextDecorations

标签: c# wpf styles


【解决方案1】:

将样式添加为资源;那么至少你可以重复使用它。我认为这是你能做的最好的。

<Application.Resources>
    <Style TargetType="TextBlock" x:Key="HoverUnderlineStyle">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="TextBlock.TextDecorations" Value="Underline" />
            </Trigger>
        </Style.Triggers>
    </Style>
</Application.Resources>

<TextBlock Style="{StaticResource HoverUnderlineStyle}" />

【讨论】:

  • 这确实使代码更干净。由于可能没有其他选择,我会接受这个作为答案。
  • TextDecoration 必须是TextDecoration,否则编译器报错
  • 我想知道如何使用附加属性或行为来完成此操作。附加属性是我认为最简洁和最容易组合的。
猜你喜欢
  • 2018-05-30
  • 2014-01-18
  • 1970-01-01
  • 2021-01-21
  • 2021-11-08
  • 2014-03-15
  • 2013-05-26
  • 2013-08-10
  • 1970-01-01
相关资源
最近更新 更多