using a trigger to set a textblock foreground on mouseover
I am trying to set block so its foreground color will change every time the mouse cursor goes over it, and this is my code:
<TextB开发者_如何学运维lock Foreground="blue" Margin="18,234,5,-2" Grid.RowSpan="3">
<Underline>Remove Message</Underline>
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<Trigger Property ="IsMouseOver" Value="True">
<Setter Property= "Foreground" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
When I try to change the setter property to any other, for example FontSize="30"
, the event does occur.
That is because the properties set on a control override the one defined in the Style, so your Foreground="blue" will override whatever you set in the style. To fix this, you can move the Foreground="blue" in the style and remove it from the properties of the control.
<TextBlock Margin="18,234,5,-2" Grid.RowSpan="3">
<Underline>Remove Message</Underline>
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property= "Foreground" Value="Blue"/>
<Style.Triggers>
<Trigger Property ="IsMouseOver" Value="True">
<Setter Property= "Foreground" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
精彩评论