我们有一个UserControl,它主要包含一个绑定到项目列表的XamTileManager(实际控件不重要)。当绑定发生变化时,我们希望使用任意动画为旧数据和新数据之间的过渡设置动画。这在WPF中通常是否可行?
替代方案当然是拥有两个UserControl并为它们之间的变化设置动画,但我们希望尽可能避免这种情况。
答案 0 :(得分:3)
您可以使用故事板在项目中放置触发器。当数据发生变化时,触发器将触发并启动故事板动画。我找到了这个例子,它用于数据绑定的文本块:
<TextBlock x:Name="tbMessage" Text="{Binding Path=StatusBarText, NotifyOnTargetUpdated=True}">
<TextBlock.Triggers>
<EventTrigger RoutedEvent="Binding.TargetUpdated">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:0" To="1.0" />
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:2" From="1.0" To="0.0" BeginTime="0:0:5" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</TextBlock.Triggers>
</TextBlock>
(source)
如果这不是您想要的,您可以使用Binding.TargetUpdated事件编写自己的动画。