2013-12-15 4 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}"/> 

Даже ваш стиль будет работать, но убедитесь, что вы не устанавливать локальное значение Foreground DP. Это связано с Dependency Property Precedence order, где локальное значение имеет более высокий приоритет, чем значения стиля сеттера.

+0

Но у меня есть несколько меток и некоторые я хочу, чтобы это изменение и некоторые из них я не делаю. Поэтому я делаю следующее для тех, которые я хочу: <Ярлык x: Name = "Label_Video2" Style = "{StaticResource mouseOverStyle}" Content = "2. Видео 2." FontSize = "16" HorizontalAlignment = «Left» Margin = «25,105,0,0» VerticalAlignment = «Top» /> –

+0

'Foreground' имеет тип' Brush'. – Chris

+0

@HarryBoy Вы все равно сможете использовать этот ответ так, как хотите (вам просто нужно добавить 'x: Key = ' и использовать его которые вы сейчас делаете. – Chris

1

Вы пытались изменить Value на Foreground недвижимость в вашем Setter?

например.

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

Смежные вопросы