5

バインディングによって要素を追加した ListView があります。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>

この基本的なセットアップでは、要素が下層のリストに結合されたときにアニメーションが既に存在します。奇妙なことに、さまざまなアニメーションが使用されています。最初の要素が右からスライドインし、他のすべての要素がポップアップします。追加されたすべての要素を同じ方法でアニメーション化する方法を探しています (たとえば、右からスライドインします)。自動生成された (Blend による) ListViewStyle に何時間もロックしていましたが、何かが見つかりませんでした。後で、このプロパティをスタイル内に追加できることがわかりました。

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

EntranceThemeTransitionPopupThemeTransitionは、アニメーションの動作を変更するため、適切なプロパティのようです。しかし、それらを使用する方法や無効にする方法がわかりません。ListView にアニメーション (右からスライドイン) を 1 つだけ取得するにはどうすればよいですか?

4

1 に答える 1

8

これはうまくいくはずです:

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

*アップデート:

ListView.ItemContainerTransitionsを使用してこれらの遷移を定義することもできます。

于 2012-11-05T22:50:41.783 に答える