开发者

using a trigger to set a textblock foreground on mouseover

开发者 https://www.devze.com 2023-01-31 07:02 出处:网络
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:

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>
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号