2012-11-05 16 views
6

मुझे एक सूची दृश्य मिला है जिसमें मैंने बाध्यकारी तत्वों को जोड़ा है। ListView इस तरह दिखता है:किसी सूची दृश्य में तत्व जोड़ते समय एनिमेशन/संक्रमण कैसे सेट करें?

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

इस मूल सेटअप के साथ पहले से ही एक एनीमेशन होता है जब तत्व अंतर्निहित सूची से बंधे होते हैं। अलग-अलग एनिमेशन के लिए अजीब तरह से उपयोग किया जाता है। पहला तत्व दाईं ओर और अन्य सभी तत्व पॉपअप से स्लाइड करता है। मैं सभी अतिरिक्त तत्वों को उसी तरह एनिमेट करने का एक तरीका खोज रहा हूं (उदा। दाएं से स्लाइड करें)। मैं घंटों के लिए ऑटो जेनरेट (ब्लेंड द्वारा) ListViewStyle में लॉक कर रहा हूं लेकिन कुछ नहीं मिला। बाद में मुझे पता चला है कि यह शैली के अंदर इस संपत्ति जोड़ना संभव है:

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

EntranceThemeTransition और PopupThemeTransition क्योंकि वे एनीमेशन के व्यवहार को बदलने का अधिकार गुण हो रहा है। लेकिन मुझे नहीं पता कि उनका उपयोग कैसे करें या कैसे अक्षम करें। मैं ListView में केवल एक एनीमेशन (दाएं से स्लाइड) कैसे प्राप्त कर सकता हूं?

उत्तर

9

यह काम करना चाहिए:

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

* अद्यतन:

तुम भी ListView.ItemContainerTransitions उपयोग कर सकते हैं ये बदलाव को परिभाषित करने के।

+0

मैं इस एनीमेशन को फिर से चलाने के लिए चाहता हूं, क्या मैं इसे कोड से पीछे कॉल कर सकता हूं? –

+0

नहीं। आपको ऐसा करने में सक्षम होने के लिए नियमित 'स्टोरीबोर्ड' या प्रति-फ्रेम एनीमेशन को हुक अप करना होगा। –

+2

4 साल बाद 'बच्चों के ट्रांसिशन' को क्या याद किया गया था, याद करने की कोशिश करते समय अपने उत्तर पर ठोकर खाएं ... :) –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^