3 votes

WPF TextBlock ColorAnimation

Je suis totalement nouveau avec les animations WPF, et pour le moment je rencontre de gros problèmes avec cela.

J'ai un TextBlock pour lequel, tant qu'une propriété de mon modèle de vue a une valeur spécifique, je veux exécuter une ColorAnimation pour sa couleur de fond. Lorsque la valeur de ma propriété change, je veux que la couleur de fond de mon TextBlock revienne à celle d'origine (probablement Transparent). Voici ce que j'ai découvert jusqu'à présent, mais cela ne fonctionne toujours pas comme je l'ai décrit.

                            <Style.Triggers>
                                <DataTrigger Binding="{Binding IsIdle}" Value="False">
                                    <DataTrigger.EnterActions>
                                        <BeginStoryboard>
                                            <Storyboard Storyboard.TargetProperty="(TextBlock.Background).(SolidColorBrush.Color)">
                                                <ColorAnimation  RepeatBehavior="Forever"
                                                                 FillBehavior="Stop"
                                                                 From="Red"
                                                                 To="Transparent"
                                                                 By="Blue"
                                                                 Duration="0:0:0.5" />
                                            </Storyboard>
                                        </BeginStoryboard>
                                    </DataTrigger.EnterActions>
                                </DataTrigger>
                            </Style.Triggers>

Est-ce que quelqu'un peut corriger cela?

Merci d'avance!

ÉDITER: La liaison fonctionne très bien et je l'ai testée en utilisant un simple DataTrigger qui change juste la couleur de fond. Mon problème est que l'animation ne s'arrête pas et ne revient pas à la couleur d'origine. Je suis sûr de quelque chose m'échappe.

5voto

Yiğit Yener Points 3398

Ajouter la balise RemoveStoryboard devrait faire l'affaire.

                    <Style.Triggers>                                 
                    <DataTrigger Binding="{Binding IsIdle}" Value="False">                                     
                        <DataTrigger.EnterActions>                                         
                            <BeginStoryboard x:Name="tt" >                                             
                                <Storyboard Storyboard.TargetProperty="(TextBlock.Background).(SolidColorBrush.Color)">                                                 
                                    <ColorAnimation  RepeatBehavior="Forever"                                                                  
                                                     FillBehavior="Stop"                                                                  
                                                     From="Red"                                                                  
                                                     To="Transparent"                                                                  
                                                     By="Blue"                                                                  
                                                     Duration="0:0:0.5" />                                             
                                </Storyboard>                                         
                            </BeginStoryboard>
                           </DataTrigger.EnterActions>                                
                         <DataTrigger.ExitActions>       
                            <RemoveStoryboard  BeginStoryboardName="tt"></RemoveStoryboard>
                        </DataTrigger.ExitActions> 
                    </DataTrigger>                          
                </Style.Triggers>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X