Tengo un objeto de datos - una clase personalizada llamada Notification
- que expone una propiedad IsCritical
. La idea es que si una notificación caducará, tiene un período de validez y se debe atraer la atención del usuario hacia ella.WPF - Hacer que la ejecución de una animación dependa de una propiedad del elemento de datos vinculado
imaginar un escenario con estos datos de prueba:
_source = new[] {
new Notification { Text = "Just thought you should know" },
new Notification { Text = "Quick, run!", IsCritical = true },
};
El segundo punto no debe figurar en el ItemsControl
con un fondo pulsante. Aquí hay un extracto de plantilla de datos simple que muestra los medios por los cuales estaba pensando en animar el fondo entre gris y amarillo.
<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>
Lo que estoy seguro acerca es cómo hacer esta animación condición de que el valor de IsCritical
. Si el valor consolidado es false
, se debe mantener el color de fondo predeterminado de #DDD
.
@Anvanka - gracias por esto. No había usado DataTrigger EnterActions o ExitActions antes. Gracias también por el ejemplo detallado: una gran respuesta y digno de la recompensa. –
De nada :). Me alegro de poder ayudar. – Anvaka