2012-10-23 7 views
11

Sto lavorando a un feed di notizie. Questo si aggiornerà ogni tanto e se vengono trovati nuovi elementi, voglio far scorrere il nuovo contenuto dall'alto.ListBox Animazione diapositiva su nuovo elemento aggiunto

In questo momento, sto solo avendo svanire nel facendo quanto segue:.

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

Questo funziona bene, ma vorrei davvero avere la diapositiva elemento in Ho provato ogni cosa possibile che potevo trova e non può arrivare da nessuna parte. Qualsiasi aiuto sarebbe molto apprezzato.

risposta

36

È questo quello che stai cercando?

<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

L'ha fatto. Stavo trascurando l'aggiunta della proprietà del setter. Grazie! – TrialAndError

+0

Magari potrei passare questo più volte! Così semplice e fa esattamente quello che volevo! Grazie! – Darkhydro

+0

Questo è bello. Sfortunatamente, anche la UnLoad non funziona, per rimuovere l'oggetto. Ho finito per implementare il pannello personalizzato con le chiamate Arrange e Measure –