2009-03-12 9 views
27

En mi proyecto tengo un WPF Listbox vinculado a un ObservableCollection. Cada vez que agrego un nuevo elemento a la Colección, el mismo elemento se agrega automáticamente a Listbox. Para mostrar los elementos en Listbox, utilizo XAML Datatemplate.Animate WPF Datatemplate cuando el elemento se agregó a Listbox?

Lo que quiero hacer es animar un elemento una vez cuando se agrega a la Colección/Listbox. ¿Se puede hacer esto? ¿Tal vez como animación en la plantilla de datos? Supongo que necesito un disparador de alguna manera para iniciar este animado, pero ¿qué disparador se dispara cuando se agrega un nuevo elemento/plantilla de datos?

Respuesta

25

Creo que un activador de evento para el evento enrutado FrameworkElement.Loaded podría funcionar. Por ejemplo:

<DataTemplate DataType="{x:Type l:Foo}"> 
    <Button x:Name="Button" Content="{Binding Path=Bar}"> 
     <Button.Background> 
      <SolidColorBrush x:Name="ButtonBrush" Color="Tan" /> 
     </Button.Background> 
    </Button> 
    <DataTemplate.Triggers> 
     <EventTrigger RoutedEvent="FrameworkElement.Loaded" SourceName="Button"> 
      <BeginStoryboard> 
       <Storyboard> 
        <ColorAnimation Storyboard.TargetName="ButtonBrush" Storyboard.TargetProperty="Color" To="Red" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </DataTemplate.Triggers> 
</DataTemplate> 
+0

¡Funciona como un sueño! Gracias – TalkingCode

+0

Buen truco, TNX! =) –

Cuestiones relacionadas