【问题标题】:Controlling WPF Animations in Xaml在 Xaml 中控制 WPF 动画
【发布时间】:2012-04-19 02:15:10
【问题描述】:

我定义了 2 个动画来闪烁网格中的单元格值,一个在值增加时,一个在值减小时。

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

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

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

故事板如下:

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

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

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

谢谢

【问题讨论】:

    标签: wpf animation storyboard


    【解决方案1】:

    你可以试试这样的:

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

    【讨论】:

    • 感谢 CodeNaked。这修复了警告。如此简单,我不敢相信我自己没有想到。现在我只需要弄清楚为什么滚动会导致错误的单元格动画。
    猜你喜欢
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 2011-08-16
    相关资源
    最近更新 更多