WPF - 鼠标悬停时更改标签外观

时间:2014-03-10 21:12:01

标签: wpf label

我有一个WPF标签,想要在鼠标悬停或悬停时更改其外观。 这个问题展示了如何使用TextBlock进行操作,而不是我想要的using a trigger to set a textblock foreground on mouseover。 这是不同的,因为使用Label,改变前景不起作用。

2 个答案:

答案 0 :(得分:5)

使用您链接的问题中的示例,但将TextBlock更改为Label可以更改Foreground,因此您必须提供更多信息如果你真的不能让它工作。试试这个:

<Label Content="My colour changes just fine" HorizontalContentAlignment="Center" 
    VerticalContentAlignment="Center">
    <Label.Style>
        <Style TargetType="Label">
            <Setter Property="Foreground" Value="Blue" />
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Foreground" Value="Red" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Label.Style>
</Label>

请注意,如果您在实际Foreground元素上设置Label,就像在答案中一样,而不是Style,那么阻止Trigger工作,所以不要这样做:

<Label Content="My colour changes just fine" HorizontalContentAlignment="Center" 
    VerticalContentAlignment="Center" Foreground="Black">
    <Label.Style>
        <Style TargetType="Label">
            <Setter Property="Foreground" Value="Blue" /> <!-- This won't work -->
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Foreground" Value="Red" /> <!--This won't work-->
                </Trigger>
            </Style.Triggers>
        </Style>
    </Label.Style>
</Label>

答案 1 :(得分:1)

以下是如何做到这一点。忽略其他属性,关注Label.Style。 使用Label可以对齐文本,如下所示。这不适用于TextBlock

<Label Content="Hover over me" Name="lblSeasons" FontWeight="Bold" Foreground="DarkBlue" Width="150" HorizontalContentAlignment="Center" Height="50" 
       VerticalContentAlignment="Center" >
    <Label.Style>
        <Style TargetType="Label">
            <Setter Property="Foreground" Value="Green"/>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="Green"/>
                    <Setter Property="BorderThickness" Value="2"/>
                    <Setter Property="BorderBrush" Value="Aqua"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Label.Style>
</Label>