使用触发器在鼠标悬停时设置文本块前景

Nad*_*ern 16 wpf xaml

我试图设置块,所以每次鼠标光标越过它时它的前景色会改变,这是我的代码:

<TextBlock 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>
Run Code Online (Sandbox Code Playgroud)

例如,当我尝试将setter属性更改为任何其他属性时FontSize="30",事件确实发生.

And*_*ana 43

这是因为控件上设置的属性会覆盖Style中定义的属性,因此Foreground ="blue"将覆盖您在样式中设置的任何内容.要解决此问题,您可以在样式中移动Foreground ="blue"并将其从控件的属性中删除.

<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>
Run Code Online (Sandbox Code Playgroud)