2012-11-05 23 views
6

Öğeleri bağlayarak eklediğim bir ListView var. Bir eleman yatan Listesine bağlanmış bir animasyon zaten orada bu temel ayar ileListView'lere öğe eklerken animasyonlar/geçişler nasıl ayarlanır?

<ListView 
     x:Name="ListView" 
     Height="auto" 
     Width="350" 
     ItemsSource="{Binding}" 
     Padding="0,0,-20,0" 
     Grid.Row="1" 
     Grid.Column="0" 
     Background="#EFEFEF" 
     ItemContainerStyle="{StaticResource ListViewStyle}"> 

     <ListView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Height="50" VerticalAlignment="Top" Margin="0,0,0,0" 
         <TextBlock Text="{Binding name} TextWrapping="NoWrap"/> 
       </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

: gibi ListView görünüyor. Garip bir şekilde farklı animasyonlar kullanılır. İlk öğe sağdan ve diğer tüm öğeler açılır penceresinden içeri girer. Eklenen tüm öğeleri aynı şekilde canlandırmak için bir yol arıyorum (örneğin sağdan kaydırın). Şu an saatlerce üretilen Auto (Blend) ListViewStyle'a kilitlendim ama bir şey bulamadım. Daha sonra tarz içinde bu özellik eklemek mümkündür öğrendim:

<Style x:Key="ListViewStyle" TargetType="ListViewItem"> 
     <Setter Property="Transitions"> 
      <Setter.Value> 
       <TransitionCollection> 
        <EntranceThemeTransition FromHorizontalOffset="400" /> 
        <PopupThemeTransition FromHorizontalOffset="400"/> 
       </TransitionCollection> 
      </Setter.Value> 
     </Setter> 
... 
</Style> 

EntranceThemeTransition ve PopupThemeTransition onlar animasyonun davranışını değiştirmek için doğru özellikleri gibi görünüyor. Ama bunları nasıl kullanacağımı veya nasıl devre dışı bırakacağımı bilmiyorum. ListView'e sadece bir animasyon (sağdan kaydırarak) nasıl ulaşabilirim?

cevap

9

Bu çalışması gerekir:

<ListView 
    x:Name="lv"> 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <VirtualizingStackPanel> 
       <VirtualizingStackPanel.ChildrenTransitions> 
        <TransitionCollection> 
         <EntranceThemeTransition 
          FromHorizontalOffset="400" /> 
        </TransitionCollection> 
       </VirtualizingStackPanel.ChildrenTransitions> 
      </VirtualizingStackPanel> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
</ListView> 

* Güncelleme:

Ayrıca bu geçişi tanımlamak için ListView.ItemContainerTransitions kullanabilirsiniz.

+0

Bu animasyonu tekrar çalıştırmak istiyorum, kodu arkadan arayabilir miyim? –

+0

Hayır. Bunu yapabilmek için normal bir 'Storyboard' veya çerçeve başına animasyon eklemeniz gerekir. –

+2

"ChildrenTransitions" ın 4 yıl sonra çağrıldığını hatırlamaya çalışırken, kendi cevabınıza rastlamak çok eğlenceli ... :) –

İlgili konular