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