2014-09-29 3 views
0

Триггер не работает. IsMouseOver не меняет стиль кнопки. Я не уверен, что не так с моим кодом. Я пытаюсь изменить свойство стиля кнопки на мыши над свойством. Он продолжает бросать ошибку.Как изменить свойство = «Стиль» в триггере

В основном я пытаюсь использовать другой стиль при наведении мыши события

<Style x:Key="FancyButtonStyle" TargetType="{x:Type Button}"> 
        <Setter Property="FontSize" Value="{Binding FontSize}"/> 
        <Setter Property="Foreground" Value="{Binding Foreground}"/> 
        <Setter Property="FontWeight" Value="{Binding FontWeight}"/> 
        <Setter Property="Width" Value="{Binding Width}"/> 
        <Setter Property="Height" Value="{Binding Height}"/> 
        <Setter Property="Background"> 
         <Setter.Value> 
          <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
           <GradientStop Offset="0.0" Color="White" /> 
           <GradientStop Offset="0.2" Color="DarkGray" /> 
           <GradientStop Offset="0.6" Color="Black" /> 
          </LinearGradientBrush> 
         </Setter.Value> 
        </Setter> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="Style" Value="{StaticResource ResourceKey=FancyButtonInvertStyle}"/> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 

       <Style x:Key="FancyButtonInvertStyle" TargetType="{x:Type Button}"> 
        <Setter Property="FontSize" Value="{Binding FontSize}"/> 
        <Setter Property="Foreground" Value="{Binding Foreground}"/> 
        <Setter Property="FontWeight" Value="{Binding FontWeight}"/> 
        <Setter Property="Width" Value="{Binding Width}"/> 
        <Setter Property="Height" Value="{Binding Height}"/> 
        <Setter Property="Background"> 
         <Setter.Value> 
          <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
           <GradientStop Offset="0.0" Color="Black" /> 
           <GradientStop Offset="0.4" Color="DarkGray" /> 
           <GradientStop Offset="0.6" Color="White" /> 
          </LinearGradientBrush> 
         </Setter.Value> 
        </Setter> 
       </Style> 

ответ

0

Вместо того, чтобы пытаться изменить Style в Trigger, изменить Background непосредственно в ней. Удерживает вас снова от повторения Style.

<Style x:Key="FancyButtonStyle" TargetType="{x:Type Button}"> 
    <Setter Property="FontSize" Value="{Binding FontSize}"/> 
    <Setter Property="Foreground" Value="{Binding Foreground}"/> 
    <Setter Property="FontWeight" Value="{Binding FontWeight}"/> 
    <Setter Property="Width" Value="{Binding Width}"/> 
    <Setter Property="Height" Value="{Binding Height}"/> 
    <Setter Property="Background"> 
     <Setter.Value> 
      <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
       <GradientStop Offset="0.0" Color="White" /> 
       <GradientStop Offset="0.2" Color="DarkGray" /> 
       <GradientStop Offset="0.6" Color="Black" /> 
      </LinearGradientBrush> 
     </Setter.Value> 
    </Setter> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="Background"> 
      <Setter.Value> 
       <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
        <GradientStop Offset="0.0" Color="Black" /> 
        <GradientStop Offset="0.4" Color="DarkGray" /> 
        <GradientStop Offset="0.6" Color="White" /> 
       </LinearGradientBrush> 
      </Setter.Value> 
      </Setter> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

Я не уверен, если вы даже можете изменить Style о себе в Trigger, как вы собираетесь, потому что он не установлен через Setter Tag в самой мишени управления.

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

  • Нет связанных вопросов^_^