我有一个 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>
EntranceThemeTransition 和 PopupThemeTransition 似乎是正确的属性,因为它们改变了动画的行为。但我不知道如何使用它们或如何禁用它们。我怎样才能让一个动画(从右边滑入)到 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/