2010-06-03 1 views
13

Ich habe einen Bildschirm enthalten etwa 15-20 TextBlocks jeder binden an eine andere Eigenschaft, zunächst alle TextBlocks leer sind die Text-Update von anderen Client kommen.WPF TextBlock Text geändert benachrichtigen

Die Sache, die ich tun möchte, ist blinkende Text für 3 Sekunden zu animieren, wenn Textwechsel.

verwendete ich das unten Drehbuch zu machen, dass passieren:

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

das Mausereignis Blitz den Text eingeben Mit Hilfe ist in Ordnung, aber das Binding.TargetUpdated Ereignis mit nichts auslösen.

Wer weiß über ein Ereignis, das ausgelöst wird, wenn der TextBlock Text geändert wird?

Antwort

24

haben Sie setzen die NotifyOnTargetUpdated Eigenschaft auf true

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

gut habe ich nicht, und es war es Dank !! – Eran

6

schon ein bisschen alt, aber hier ist die Lösung in reinem XAML:

<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

Danke, eine schöne Xaml einzige Lösung. Genau das, wonach ich gesucht habe. –