XAML突出显示MouseOver上的文本块背景

时间:2013-04-03 12:20:21

标签: silverlight xaml

我有一个TextBlock,当我把鼠标放在它上面时,我希望像Button一样强调它。通常,只会突出显示文本。有谁知道如何做到这一点?我很感激一个例子。

提前致谢。

1 个答案:

答案 0 :(得分:0)

根据您的要求总体而言,您有多种方法可以完成此任务。您的问题将来自提供背景,因为TextBlock默认情况下没有该属性可用作框架元素。不过这里有几种方法;

  1. 您可以使用HyperlinkButton模板为Content Foreground和背景BorderRectangle指定颜色变化等。 VisualStateManager中的某些内容,只需将您的文字设为HyperlinkButton类型即可。通过查看默认模板,通常可以非常快速地计算出来。

  2. 您可以使用TextBlock创建VisualStateManager模板,以执行上述相同类型的操作。

  3. 如果仅针对单个实例或几个地方,您可以使用附加到对象的EventTrigger来完成同样的事情,例如;

  4. <强>命名空间(S):

    的xmlns:ⅰ= “http://schemas.microsoft.com/expression/2010/interactivity” 的xmlns:EI = “http://schemas.microsoft.com/expression/2010/interactions”

    <Border x:Name="MyBackground">
      <TextBlock x:Name="MyForeground" Text="Hover Over Me!" Margin="5">
          <i:Interaction.Triggers>
             <i:EventTrigger EventName="MouseEnter">
                 <ei:ChangePropertyAction TargetName="MyForeground"
                                          PropertyName="Foreground"
                                          Value="Orange" />
                 <ei:ChangePropertyAction TargetName="MyBackground"
                                          PropertyName="Background"
                                          Value="Blue" />
             </i:EventTrigger>
             <i:EventTrigger EventName="MouseLeave">
                 <ei:ChangePropertyAction TargetName="MyForeground"
                                          PropertyName="Foreground"
                                          Value="Black" />
                 <ei:ChangePropertyAction TargetName="MyBackground"
                                          PropertyName="Background"
                                          Value="Transparent" />
           </i:EventTrigger>
          </i:Interaction.Triggers>
        </TextBlock>
    </Border>
    

    这只是其中几个未包含在此示例中的其他几种可能的方法。希望这可以帮助。 :)