【问题标题】:Wait for all WPF animations to stop等待所有 WPF 动画停止
【发布时间】:2010-04-12 06:43:22
【问题描述】:

给定一个 WPF 窗口,它可能有也可能没有动画,我想等到它们都完成后再继续处理。有没有通用的方法来做到这一点。目前我可以这样做:

void WaitForAnimation(Storyboard storyboard)
{
    WaitUntil(() => storyboard.GetCurrentState() == ClockState.Stopped);
}

但这假设我知道情节提要或有某种找到它们的方法。有没有办法做到这一点?

【问题讨论】:

    标签: wpf animation storyboard


    【解决方案1】:

    一个建议是使用 Storyboard.Completed 事件来找出每个故事板的完成情况。

    【讨论】:

    • 是的,但是如何获得所有相关的故事板?
    • gud 问题。让我搜索,如果我得到有用的东西,我会告诉你。如果你有什么,请更新我。
    【解决方案2】:

    为什么不给你的故事板一个 x:Name 并将它们放入代码隐藏的集合中?你有几个?

    【讨论】:

    • 这是一个非常普遍的问题。我只是给了一个窗口。我不知道会有多少故事板——如果有的话。
    • 那是相当复杂的。从 window 继承的类可能在代码隐藏中创建故事板作为私有属性或局部变量。它甚至可以在没有故事板的情况下制作动画。要在您的基类中获得对动画的更一般控制,您必须强制执行一些合同。例如:动画仅使用故事板作为资源 - 然后很容易在代码中使用 FindResource 检索所有故事板并检查它们的状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    相关资源
    最近更新 更多