J'ai un objet de données - une classe personnalisée appelée Notification
- qui expose une propriété IsCritical
. L'idée étant que si une notification expire, elle a une période de validité et l'attention de l'utilisateur doit être attirée sur elle.WPF - Conditionnant l'exécution d'une animation à une propriété de l'élément de données lié
Imaginez un scénario avec ces données de test:
_source = new[] {
new Notification { Text = "Just thought you should know" },
new Notification { Text = "Quick, run!", IsCritical = true },
};
Le deuxième élément doit apparaître dans la ItemsControl
avec un fond pulsant. Voici un extrait de modèle de données simple qui montre les moyens par lesquels je pensais animer l'arrière-plan entre le gris et le jaune.
<DataTemplate DataType="Notification">
<Border CornerRadius="5" Background="#DDD">
<Border.Triggers>
<EventTrigger RoutedEvent="Border.Loaded">
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetProperty="Background.Color"
From="#DDD" To="#FF0" Duration="0:0:0.7"
AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Border.Triggers>
<ContentPresenter Content="{TemplateBinding Content}" />
</Border>
</DataTemplate>
Ce que je ne suis pas sûr est de savoir comment faire cette animation conditionnelle à la valeur de IsCritical
. Si la valeur liée est false
, la couleur d'arrière-plan par défaut #DDD
doit être conservée.
@Anvanka - merci pour cela. Je n'avais pas utilisé DataTrigger EnterActions ou ExitActions auparavant. Merci aussi pour l'exemple détaillé - une excellente réponse et digne de la prime. –
Vous êtes les bienvenus :). Je suis heureux d'avoir pu aider. – Anvaka