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