NOTA he hecho la pregunta relacionada (con una respuesta aceptada): How to combine DataTrigger and Trigger?¿Cómo combinar DataTrigger y EventTrigger?
creo que es necesario combinar un EventTrigger
y una DataTrigger
para conseguir lo que busco:
- cuando aparece un elemento en mi ListBox, debe parpadear por unos momentos
- si el elemento es 'Crítico', entonces debe permanecer resaltado
Actualmente tengo un DataTemplate que tiene este aspecto:
<DataTemplate DataType="{x:Type Notifications:NotificationViewModel}">
<Grid HorizontalAlignment="Stretch">
<Border Name="Background" CornerRadius="8" Background="#80c0c0c0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
<Border Name="Highlight" CornerRadius="8" Background="Red" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
<!-- snip actual visual stuff -->
<Grid.Triggers>
<EventTrigger RoutedEvent="Grid.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation x:Name="LoadedAnimation"
Storyboard.TargetName="Highlight"
Storyboard.TargetProperty="Opacity"
From="0" To="1"
RepeatBehavior="5x"
Duration="0:00:0.2"
AutoReverse="True" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Grid.Triggers>
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=IsCritical}" Value="True">
<Setter TargetName="LoadedAnimation" Property="RepeatBehavior" Value="5.5x" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
La idea es que un EventTrigger anima la opacidad del Highlight
de frontera entre 0 y 1 y de nuevo repetidamente cuando el artículo se carga por primera vez, la elaboración del la atención del usuario a ella. El DataTrigger
determina el número de veces que se debe animar. Si el modelo de vista informa que el elemento IsCritical
, la animación se produce 5,5 veces (de manera que finaliza en opacidad 1); de lo contrario, aparece 5 veces (finaliza en opacidad 0.)
Sin embargo, el XAML anterior no funciona porque el creador del DataTrigger falla con:
No se encontró el nombre Child 'LoadedAnimation' en VisualTree.
Bastante bien. Por lo tanto, a menos que use un convertidor de valor personalizado o que coloque el recuento de animación en el modelo de vista y que sea vinculante para él, ¿cuáles son mis opciones?
Podría ser útil http://stackoverflow.com/questions/2764415/how-to-give-the-condition-for-eventtrigger –