2013-12-15 52 views
1

我已經習慣了以下改變我懸停在我的標籤文本顏色。但默認的文字顏色是黑色的。我如何修改下面的默認顏色爲其他顏色,例如白色。更改默認懸停在文本顏色wpf

<Page.Resources> 
    <SolidColorBrush x:Key="mouseOverColor" Color="Gold" /> 
    <Style x:Key="mouseOverStyle" TargetType="Label"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="Label"> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Foreground" Value="{StaticResource mouseOverColor}" /> 
         </Trigger> 
        </ControlTemplate.Triggers> 
        <ContentPresenter /> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Page.Resources> 

回答

5

根本不需要重寫模板。這隻能與以下樣式來實現:

<SolidColorBrush x:Key="mouseOverColor" Color="Gold" /> 
<Style TargetType="Label" x:Key="mouseOverStyle"> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="Foreground" Value="{StaticResource mouseOverColor}"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

您的觸發器不會在工作的情況下你是在標籤上規定的Foreground默認值。

不會爲這個標籤工作:

<Label Content="sjdfjfddjfjdfs" 
     Style="{StaticResource mouseOverStyle}" Foreground="Green"/> 

然而,將這個標籤工作:

<Label Content="sjdfjfddjfjdfs" Style="{StaticResource mouseOverStyle}"/> 

即使你的風格工作,但要確保你不設置局部值前景DP。這是因爲Dependency Property Precedence order其中本地值比樣式的setter值擁有更高的優先級。

+0

但我有幾個標籤和一些我想有這種變化所以我做了以下的我想要的:

+0

'Foreground'有一種'Brush' – Chris

+0

@HarryBoy你應該仍然能夠以你想要的方式使用這個答案你只需要添加'x:Key = '並使用它你現在正在做的事情。 – Chris

1

您是否試過在Setter中更改Foreground屬性的Value

例如

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

或定義您想要的顏色的Brush並使用它?例如

<SolidColorBrush x:Key="myColor" Color="White" /> 

<!-- Your Existing Code --> 
    <Setter Property="Foreground" Value="{StaticResource myColor}" /> 
<!-- Your Existing Code --> 

羅希特的答案是簡單得多/更明智的,如果你只是在標籤顏色的變化後(而不是做與ControlTemplate什麼。