在Xaml中控制WPF动画

时间:2012-04-05 10:31:12

标签: wpf animation storyboard

我有两个动画定义为我的网格中的闪存单元格值,一个是值增加时的值,另一个是值减小时的值。

在调试中运行应用程序时,我在输出窗口中看到了大量的警告: -

  

无法执行操作,因为指定的Storyboard从未应用于此对象以进行交互式控制。行动=“停止”;故事板= 'System.Windows.Media.Animation.Storyboard';

我的动画是通过数据触发器触发的,如下所示: -

enter image description here

故事板如下:

enter image description here

鉴于StopStoryboard似乎是问题所在,即没有需要停止的故事板运行。另外我的理解是在WPF中开始一个新动画将替换已经运行的任何现有动画。但是,如果我从两个DataTriggers中删除StopStoryboard,我会遇到另一个问题。这次只有BidDownStory会触发。我永远不会看到细胞Animate Blue。

另一件有趣的事情有时会发生。如果动画在屏幕外发生(即列不可见)并且我滚动以使列可见,我会按预期看到动画。但是,如果我然后将网格滚动回到列再次关闭屏幕,动画将继续运行,但是对于网格中的不同列!

如果您可以提供解决这些问题的任何帮助,我们将不胜感激。

由于

1 个答案:

答案 0 :(得分:5)

您可以尝试这样的事情:

<DataTrigger Binding="{Binding Path=RowData.Row.BidUp}" Value="True">
    <DataTrigger.EnterActions>
        <BeginStoryboard Storyboard="{StaticResource AnimateCellBlue}" />
    </DataTrigger.EnterActions>
    <DataTrigger.ExitActions>
        <BeginStoryboard Storyboard="{StaticResource AnimateCellRed}" />
    </DataTrigger.ExitActions>
</DataTrigger>