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

6

我有一个WPF标签,并希望在鼠标悬停时更改其外观。 这个问题展示了如何使用TextBlock实现,但并不完全符合我的需求 使用触发器在鼠标悬停时设置TextBlock前景色。 这是不同的,因为对于Label,更改前景色没有起作用。

2个回答

12

使用你提供的问题示例,将其中的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>

请注意,如果您在实际的Label元素上设置了Foreground,就像您在答案中所做的那样,而不是在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
这里是如何做到的。忽略其他属性,专注于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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接