2010-03-04 50 views
4

为什么这触发工作(更改按钮,“红”,当鼠标悬停的前景)前景财产触发不改变

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

回答

6

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

<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> 
+1

感谢。这工作 – Jehof 2010-03-04 19:34:01

2

[sp] Yoséque es un post antiguo pero dejo la respuesta que buscaba el amigo。

[CN]我知道这是旧的文章,但是这是解决方案(财产触发) (对不起,我不会讲英语非常好)

答案:

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

的这样做最合理的方式:

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

但..不要工作..

+1

我不知道,但imho它是更好地删除除英文以外的语言特定的句子。 – Fendy 2013-07-29 08:24:31