2010-10-19 6 views
13

J'ai besoin de créer un déclencheur, qui va modifier la propriété d'arrière-plan Border, lorsque MouseEnter s'est produit. J'ai fait ce qui suit:WPF définir l'arrière-plan de bordure dans le déclencheur

<Border Width="20" Height="30" Focusable="True"> 
     <Border.Background> 
      <LinearGradientBrush> 
       <LinearGradientBrush.GradientStops> 
        <GradientStop Color="Aquamarine" Offset="0"/> 
       </LinearGradientBrush.GradientStops> 
      </LinearGradientBrush> 
     </Border.Background> 
     <Border.Style> 
      <Style TargetType="{x:Type Border}"> 
       <Style.Triggers> 

        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="Background"> 
          <Setter.Value> 
           <LinearGradientBrush> 
            <LinearGradientBrush.GradientStops> 
             <GradientStop Color="Aquamarine" Offset="0"/> 
             <GradientStop Color="Beige" Offset="0.2"/> 
             <GradientStop Color="Firebrick" Offset="0.5"/> 
             <GradientStop Color="DarkMagenta" Offset="0.9"/> 
            </LinearGradientBrush.GradientStops> 
           </LinearGradientBrush> 
          </Setter.Value> 
         </Setter> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </Border.Style> 
    </Border> 

mais cela ne fonctionne pas. Merci.

Répondre

25

Erreur commune. Vous avez directement défini la propriété Border.Background qui remplacera toujours la valeur définie par votre déclencheur. (. Localement définir des valeurs have a very high precedence, le style a une priorité assez faible)

Au lieu de cela, vous devez déplacer votre arrière-plan "normal" dans le style comme ceci:

<Border> 
    <Border.Style> 
     <Style TargetType="Border"> 
      <Setter Property="Background"> 
       <Setter.Value> 
        <LinearGradientBrush> 
         <LinearGradientBrush.GradientStops> 
          <GradientStop Color="Aquamarine" Offset="0"/> 
         </LinearGradientBrush.GradientStops> 
        </LinearGradientBrush> 
       </Setter.Value> 
      </Setter> 
      <Style.Triggers> 
       <!-- the trigger you showed --> 
      </Style.Triggers> 
     </Style> 
    </Border.Style> 
</Border> 
+0

Wow! Merci beaucoup :) –

+0

Pas de problème, heureux d'aider. Si cette réponse résout votre problème, veuillez le marquer comme accepté afin qu'il ne reste pas dans la liste des questions ouvertes. – Josh

+0

oh, désolé :) Merci encore! –

Questions connexes