Dans mon application WPF, j'ai un contrôle de retour que je souhaite voir apparaître après la fin d'une action de l'utilisateur (sauvegarde des données, suppression ...). La visibilité est définie sur Hidden pour commencer et le style est défini sur le style animateFadeOut défini en tant que ressource (voir ci-dessous). Ensuite, je veux placer le texte et contrôler la visibilité visible dans mon code C# et avoir le contrôle de rétroaction afficher le message et disparaître après 5 secondes et rester caché (Visibility.Hidden).WPF Fade Out sur un contrôle
Le code XAML suivant fonctionne la première fois que j'appelle control.Visiblity = Visibility.Visible mais le contrôle ne réapparaît pas la deuxième fois. Je pense que c'est parce que l'animation est toujours en cours d'exécution, ce qui a le contrôle sur le contrôle de rétroaction. J'ai alors essayé de mettre FillBehavior à "Stop" mais cela a juste rendu le contrôle encore visible et je le veux caché. Puis, avec FillBehavior = "Stop", j'ai essayé de définir un trigger "quand Opacity = 0, place la Visibilité à Caché". Le déclencheur n'a pas semblé tirer et j'ai été laissé avec le contrôle visible une fois de plus après l'animation terminée.
S'il vous plaît aider à souligner ce que je fais mal ici. Alternativement, si vous pouvez suggérer un meilleur moyen d'afficher un contrôle qui disparaît après 5 secondes et peut être appelé encore et encore, j'apprécierais.
Merci!
<Style TargetType="{x:Type FrameworkElement}" x:Key="animateFadeOut"> <Style.Triggers> <Trigger Property="Visibility" Value="Visible"> <Trigger.EnterActions> <BeginStoryboard > <Storyboard> <DoubleAnimation BeginTime="0:0:5.0" Storyboard.TargetProperty="Opacity" From="1.0" To="0.0" Duration="0:0:0.5"/> </Storyboard> </BeginStoryboard> </Trigger.EnterActions> </Trigger> </Style.Triggers> </Style>
Je pris une approche légèrement différente pour résoudre le problème ... Je l'ai écrit en C#. (Voir l'article ci-dessous - la section des commentaires est trop petite pour les messages de code) – sondlerd