2010-06-03 6 views
13

J'ai un écran contenant environ 15-20 TextBlocks chacun lié à une propriété différente, au début tous les TextBlocks sont vides la mise à jour de texte proviennent d'autres clients.WPF TextBlock texte modifié notifier

La chose que je veux faire est d'animer le texte clignotant pendant 3 secondes quand le texte change.

J'ai utilisé le story-board ci-dessous pour y arriver:

<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> 

En utilisant l'événement souris à l'entrée du flash texte est bien, mais en utilisant l'événement Binding.TargetUpdated n'a pas déclenché quoi que ce soit.

Quelqu'un sait-il sur l'événement qui se déclenche lorsque le texte TextBlock est modifié?

Répondre

24

avez-vous mis la NotifyOnTargetUpdated propriété sur true

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

Eh bien, je ne l'avez pas et c'était ça Merci !! – Eran

6

déjà un peu vieux, mais voici la solution en XAML pur:

<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

Merci, une belle solution de xaml seulement. Exactement ce que je cherchais. –

Questions connexes