2012-10-23 18 views
11

Ich arbeite an einem News-Feed. Dies wird von Zeit zu Zeit aktualisiert und wenn neue Elemente gefunden werden, möchte ich den neuen Inhalt von oben einfügen.ListBox Slide Animation auf neuen Artikel hinzugefügt

Gerade jetzt, ich habe es einfach verblasst in dem durch folgende Aktionen ausführen:.

<ListBox Grid.Row="0" Height="Auto" HorizontalAlignment="Stretch" Margin="5,5,5,5" VerticalAlignment="Top" ItemsSource="{Binding NewsItems,UpdateSourceTrigger=PropertyChanged}" > 
     <ListBox.ItemContainerStyle>     
      <Style TargetType="{x:Type ListBoxItem}">      
       <Style.Triggers>           
         <EventTrigger RoutedEvent="Loaded"> 
         <EventTrigger.Actions>         
          <BeginStoryboard> 
           <Storyboard>          
            <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:2" />  
           </Storyboard> 
          </BeginStoryboard> 
         </EventTrigger.Actions> 
        </EventTrigger> 
       </Style.Triggers> 
      </Style> 
      </ListBox.ItemContainerStyle> 
     <ListBox.ItemTemplate>  
     .... 
</ListBox> 

Dies funktioniert gut, aber ich würde wirklich in das Elemente Rutsche haben möchte ich versucht habe, all mögliche, was ich konnte, finden und können nirgends hinkommen. Jede Hilfe würde sehr geschätzt werden.

Antwort

36

Ist das wonach Sie suchen?

<ListBox x:Name="lstBox" Grid.Row="0" Height="Auto" HorizontalAlignment="Stretch" Margin="5,5,5,5" VerticalAlignment="Top" ItemsSource="{Binding NewsItems,UpdateSourceTrigger=PropertyChanged}" > 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="{x:Type ListBoxItem}"> 
       <Setter Property="LayoutTransform"> 
        <Setter.Value> 
         <ScaleTransform x:Name="transform" /> 
        </Setter.Value> 
       </Setter> 
       <Style.Triggers> 
        <EventTrigger RoutedEvent="Loaded"> 
         <EventTrigger.Actions> 
          <BeginStoryboard> 
           <Storyboard> 
            <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:2" /> 
            <DoubleAnimation Storyboard.TargetProperty="LayoutTransform.ScaleY" From="0" Duration="0:0:.2"/> 
           </Storyboard> 
          </BeginStoryboard> 
         </EventTrigger.Actions> 
        </EventTrigger> 
       </Style.Triggers> 
      </Style> 
     </ListBox.ItemContainerStyle> 
    </ListBox> 
+0

Das hat es getan. Ich übersehe das Hinzufügen der Setter-Eigenschaft. Vielen Dank! – TrialAndError

+0

Ich wünschte, ich könnte das mehrfach aufwerten! So einfach und macht genau das, was ich wollte! Vielen Dank! – Darkhydro

+0

Das ist cool. Leider funktioniert der UnLoad nicht auf die gleiche Weise, um den Gegenstand zu entfernen. Ich habe am Ende benutzerdefinierte Panel mit Arrange und Measure Calls implementiert –