c# - 将元素添加到 ListView 时如何设置动画/过渡?

标签 c# windows xaml microsoft-metro windows-runtime

我有一个 ListView,我通过绑定(bind)添加了元素。 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>

有了这个基本设置,当一个元素绑定(bind)到底层列表时,已经有一个动画。奇怪的是使用了不同的动画。第一个元素从右侧滑入,所有其他元素弹出。我正在寻找一种以相同方式为所有添加的元素设置动画的方法(例如,从右侧滑入)。我已经锁定自动生成的(由 Blend)ListViewStyle 几个小时了,但找不到任何东西。后来发现在style里面添加这个属性是可以的:

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

最佳答案

这应该有效:

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

*更新:

您还可以使用 ListView.ItemContainerTransitions 来定义这些转换。

关于c# - 将元素添加到 ListView 时如何设置动画/过渡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13241002/

相关文章:

c# - byte[] 数组模式搜索

c# - .NET 中的对象相等性

c# - WPF 中的简单数据绑定(bind)

WPF - 如何跳过选项卡导航中的标签?

c# - 调试时导致登录重定向缓慢的原因是什么?

javascript - 将 Javascript 插入 ASP.Net 页面

windows - Rails-MiniMagick 命令不起作用

windows - 从 Windows 上的 Git 开始,接收 sh.exe": config: command not found

windows - 在 Windows 上使用音频检测进程

c# - Xamarin.Forms.Labs - ListView 中的复选框在 Windows Phone 8 上不起作用?