【问题标题】:How to wait for Storyboard in another class to complete如何等待另一个班级的故事板完成
【发布时间】:2017-12-05 19:58:08
【问题描述】:

所以我有两个班

A.主窗口
B. 移动对象

1. MainWindow - 调用 MoveObject 类方法在画布上执行情节提要动画。

2。 MoveObjects - 在画布上执行故事板动画。

一切正常。我需要的是,一旦动画显示在画布上,我想在 MainWindow 中调用一个私有的方法。但是,由于它是私有的,我无法从 MoveObjects 调用它,并且在情节提要执行完成后,我无法将控件返回到 MainWindow。

现在,它调用 MoveObjects 类,显示动画但不返回调用类,即 MainWindow。

我怎样才能做到这一点?

我尝试了以下代码 -

bg.DoWork += (s, el) =>
            {

                Dispatcher.Invoke(new Action(() => {
                MoveObjects.AnimateMSU(expectedSKUQuantitiesAtPPS[(int)SKUTypes.Shirts],
                expectedSKUQuantitiesAtPPS[(int)SKUTypes.Pants],
                expectedSKUQuantitiesAtPPS[(int)SKUTypes.Shoes],
                expectedSKUQuantitiesAtPPS[(int)SKUTypes.Hats],
                StorageGridAnimationCanvas, "Finish");
            }), DispatcherPriority.ContextIdle);

        };

        bg.RunWorkerCompleted += (s, el) =>
        {
             //Call a private method of current class
        };


        bg.RunWorkerAsync();

但是,bg.RunWorkerCompleted 在动画显示在 Canvas 上之前执行。如何让 MainWindow 类等待 MoveObjects 类完全执行?

【问题讨论】:

    标签: c# wpf storyboard


    【解决方案1】:

    您可以在此处使用委托。请查找代码示例here

    【讨论】:

    • 您好,它不起作用。它做同样的事情。执行 AnimateMSU 方法,返回,然后在我的窗口上显示实际动画。
    猜你喜欢
    • 2020-05-26
    • 1970-01-01
    • 2014-10-19
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多