代码之家  ›  专栏  ›  技术社区  ›  Jehof

属性触发器中按钮的前景未更改

  •  4
  • Jehof  · 技术社区  · 15 年前

    为什么这个触发器工作(当鼠标结束时,将按钮的前景更改为“红色”)。

    <Grid>
     <Grid.Resources>
      <Style TargetType="{x:Type Button}">
       <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
         <Setter Property="Foreground" Value="Red"/>
        </Trigger>
       </Style.Triggers>
      </Style>
     </Grid.Resources>
     <Button Content="Hello"/>
    </Grid>
    

    但当按钮的前景被设置为一种颜色(在本例中为“蓝色”)时,这个触发器就不起作用了?

    <Grid>
     <Grid.Resources>
      <Style TargetType="{x:Type Button}">
       <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
         <Setter Property="Foreground" Value="Red"/>
        </Trigger>
       </Style.Triggers>
      </Style>
     </Grid.Resources>
     <Button Foreground="Blue" Content="Hello"/>
    </Grid>
    
    2 回复  |  直到 9 年前
        1
  •  7
  •   Brad    15 年前

    按钮的本地值将覆盖样式。尝试:

    <Grid>
    
        <Grid.Resources>
            <Style TargetType="{x:Type Button}">
                <Setter Property="Foreground" Value="Blue"/>
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Foreground" Value="Red"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Grid.Resources>
    
        <Button Content="Hello"/>
    
    </Grid>
    
        2
  •  2
  •   Leodev    9 年前

    [sp]YO S_ que es un post antigo pero dejo la respuesta que buscaba el amigo.你是谁?

    我知道这是个老帖子,但这是解决方案(在属性触发器中) (对不起,我英语说得不太好)

    答:

    <Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="Blue"/>
    

    最合乎逻辑的方法是:

    <Setter Property="Foreground" Value="Blue"/>
    

    但是…不要工作。