2010-06-03 18 views
13

Tengo una pantalla que contiene aproximadamente 15-20 TextBlocks cada uno se une a una propiedad diferente, al principio todos los TextBlocks están vacíos, la actualización de texto proviene de otro cliente.WPF TextBlock texto cambiado notifique

Lo que quiero hacer es animar el texto intermitente durante 3 segundos cuando cambia el texto.

que utiliza el guión gráfico a continuación para que esto suceda:

<Setter Property="Visibility" Value="Visible"/> 

     <Style.Triggers> 
     <EventTrigger RoutedEvent="UIElement.MouseEnter"> 

      <BeginStoryboard > 
       <Storyboard Duration="0:0:03"> 
        <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(UIElement.Visibility)"> 
         <DiscreteObjectKeyFrame KeyTime="00:00:00" Value="{x:Static Visibility.Visible}"/> 
         <DiscreteObjectKeyFrame KeyTime="00:00:00.5" Value="{x:Static Visibility.Hidden}"/> 
         <DiscreteObjectKeyFrame KeyTime="00:00:01" Value="{x:Static Visibility.Visible}"/> 
         <DiscreteObjectKeyFrame KeyTime="00:00:01.5" Value="{x:Static Visibility.Hidden}"/> 
         <DiscreteObjectKeyFrame KeyTime="00:00:02" Value="{x:Static Visibility.Visible}"/> 
         <DiscreteObjectKeyFrame KeyTime="00:00:02.5" Value="{x:Static Visibility.Hidden}"/> 
         <DiscreteObjectKeyFrame KeyTime="00:00:03" Value="{x:Static Visibility.Visible}"/> 
        </ObjectAnimationUsingKeyFrames> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Style.Triggers> 
</Style> 

Con el ratón entrar en caso de que el flash de texto está bien, pero utilizando el evento Binding.TargetUpdated no provocar nada.

¿Alguien sabe sobre el evento que se produce cuando se cambia el texto TextBlock?

Respuesta

24

hicieron establece la propiedad NotifyOnTargetUpdated a cierto

<TextBlock Text="{Binding Path=YourProperty, NotifyOnTargetUpdated=True}" TargetUpdated="OnTargetUpdated"/> 
+0

así que no lo hice y fue Gracias !! – Eran

6

ya un poco viejo, pero aquí la solución en xaml pura:

<TextBlock VerticalAlignment="Center" 
      Text="{Binding ErrorMsg, NotifyOnTargetUpdated=True}"> 
    <TextBlock.Triggers> 
     <EventTrigger RoutedEvent="Binding.TargetUpdated"> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation BeginTime="0:0:0" 
            Duration="0:0:1" 
            From="0.0" 
            Storyboard.TargetProperty="Opacity" 
            To="1.0" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </TextBlock.Triggers> 
</TextBlock> 
+1

Gracias, una buena solución solo de xaml. justo lo que estaba buscando. –