有一篇MSDN文章专门解决了我的问题,但在我的案例中没有提供解决方案:
http://msdn.microsoft.com/en-us/library/aa970493(v=vs.110).aspx
我想从我的视图模型中触发动画,其中我淡出一个文本块,然后淡入另一个文本块,看起来像文本正在更新。我需要连续3次运行这个动画。如果我可以连续3次将Animate属性设置为“On”并且它将重复启动动画,那将会很好。但这似乎不起作用。
下一个最佳选择是在动画完成时通知我的ViewModel,允许我将Animate属性设置为“Off”,然后将其更改回“On”。这似乎有两个原因。如果在同一方法中设置“关闭”和“打开”,则调用View似乎不会更新属性,直到线程方法执行完成为止。第二个问题是动画的已完成事件是从未被调用 ...这对我来说是一个持续存在的问题。
还有其他建议吗?
以下是代码示例:
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Animate}" Value="On">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<!-- Show one textblock and hide the other -->
<DoubleAnimation
Storyboard.TargetName="txtMessage"
Storyboard.TargetProperty="Opacity"
To="1.0" Duration="0:0:0" />
<DoubleAnimation
Storyboard.TargetName="txtMessage2"
Storyboard.TargetProperty="Opacity"
To="0.0" Duration="0:0:0" />
<!-- Now animate the text blocks back to their original setting -->
<DoubleAnimation
Storyboard.TargetName="txtMessage"
Storyboard.TargetProperty="Opacity"
From="1.0" To="0.0" Duration="0:0:1"
Completed="Animation_Completed" />
<DoubleAnimation
Storyboard.TargetName="txtMessage2"
Storyboard.TargetProperty="Opacity"
From="0.0" To="1.0" Duration="0:0:1"
BeginTime="0:0:1"
Completed="Animation_Completed" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</DataTemplate.Triggers>
同样,由于某种原因,动画完成处理程序永远不会被击中......
更新了5/8以更具体地说明我需要动画制作的内容。