WPF应用中的多个故事板

4
我在一个WPF应用程序中有三个storyboard。
begin是单个动画,progress是重复动画,end也是单个动画。
所有的storyboard都在动画同一张图片,“progress” storyboard 在另一个线程运行查询时重复播放, “begin” storyboard在其之前播放,“end” 动画在其之后播放。
我认为这是一个简单的问题:当应用程序启动时,开始“begin”动画,然后在oncompleted事件处理程序中启动progress动画等。
但是它没有起作用:进度动画开始了,但它出现了不正常的闪烁。
我制作了一个“button1”来分析这个问题,并注意到在按钮的onclick事件处理程序中相同的方法可以工作(在begin storyboard结束后,我按下它,progress storyboard就会开始并完美地出现)。
(begin动画的FillBehavior是“Stop”:如果没有这个设置,按钮就无法工作,但是在设置之后事件处理程序仍然错误)。
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        begin = (Storyboard)FindResource("startanimation");
        progress = (Storyboard)FindResource("progressanimation");
        end = (Storyboard)FindResource("stopanimation");
        begin.Completed += new EventHandler(begin_Completed);
        begin.Begin();
    }


    void begin_Completed(object sender, EventArgs e)
    {
        progress.Begin();       //not works
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {            
        progress.Begin();       //works
    }

有任何想法吗?
2个回答

0

最终我被迫创建了一个次要计时器,并在tick事件中启动进度动画...非常丑陋,但是有效。

欢迎提供任何其他建议。


0

试试这个:

void begin_Completed(object sender, EventArgs e)      
{          
     this.Dispatcher.Invoke(
                            System.Windows.Threading.DispatcherPriority.Normal,
                            new Action(
                            delegate()
                            {
                                progress.Begin();
                            }
                        ));
} 

谢谢你的回答。我尝试了,但是不起作用,闪烁仍然是一样的。它们是否重叠在一起,或者其他奇怪的事情……我不知道。 - magyarm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接