2010-10-29 15 views
2

Comment modifier une couleur TabItem de sa couleur non sélectionnée à sa couleur sélectionnée avec une animation sur SelectionChanged, afin que les TabItems non sélectionnés et sélectionnés changent?WPF - Animation sur SelectionChanged

Modifier: Voici à quoi ressemble mon CustomTemplate. Il n'y a pas d'animation du tout alors qu'ai-je fait de mal?

<Style TargetType="TabItem"> 
     <Setter Property="IsEnabled" Value="False" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="TabItem"> 
        <Grid> 
         <Border BorderBrush="Transparent" BorderThickness="0" MinWidth="120"> 
          <StackPanel Orientation="Vertical"> 
           <ContentPresenter HorizontalAlignment="Center" ContentSource="Header" /> 
           <Ellipse Name="Ellipse" Stroke="Black" StrokeThickness="1" Width="24" Height="24" Margin="5" Fill="Transparent" /> 
          </StackPanel> 
         </Border> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <MultiTrigger> 
          <MultiTrigger.Conditions> 
           <Condition Property="IsSelected" Value="True" /> 
           <Condition Property="Ellipse.Fill" Value="Transparent" /> 
          </MultiTrigger.Conditions> 
          <MultiTrigger.EnterActions> 
           <BeginStoryboard> 
            <Storyboard> 
             <ColorAnimation Storyboard.TargetName="Ellipse" Storyboard.TargetProperty="Fill" 
                 From="Transparent" To="Orange" Duration="0:0:1" /> 
            </Storyboard> 
           </BeginStoryboard> 
          </MultiTrigger.EnterActions> 
         </MultiTrigger> 
         <MultiTrigger> 
          <MultiTrigger.Conditions> 
           <Condition Property="IsSelected" Value="False" /> 
           <Condition Property="Ellipse.Fill" Value="Orange" /> 
          </MultiTrigger.Conditions> 
          <MultiTrigger.EnterActions> 
           <BeginStoryboard> 
            <Storyboard> 
             <ColorAnimation Storyboard.TargetName="Ellipse" Storyboard.TargetProperty="Fill" 
                 From="Orange" To="Transparent" Duration="0:0:1" /> 
            </Storyboard> 
           </BeginStoryboard> 
          </MultiTrigger.EnterActions> 
         </MultiTrigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

Répondre

0

Vous pouvez définir modèle TabItem personnalisé et exécuter des animations en utilisant des déclencheurs.

+0

Vrai et j'ai essayé ça. Le seul problème est que lorsque le TabControl est chargé pour la première fois, le Trigger pour lorsque les TabItems ne sont pas sélectionnés s'exécute sur tous les TabItems qui ne sont pas sélectionnés, ce qui les fait changer d'apparence quand ils ne devraient rien faire. –

+0

@Jova. Essayez d'utiliser la propriété Tag de TabItem pour indiquer si TabItem a déjà été sélectionné et utilisez MultiTriggers. –

+0

J'ai ajouté du code maintenant pour que vous puissiez le voir. Aucune animation n'est en cours lorsque je change d'onglet. –