一千萬個為什麽

搜索

WPF動畫重復時如何觸發事件處理程序

我有一個WPF動畫,RepeatBehavior設置為Forever。每次重復動畫時都需要更新某些內容。我無法弄清楚如何捕獲重復事件,Complete事件處理程序不適用於此。動畫間隔是可編程的,並由一些環境因素決定。所以使用計時器不是一個簡潔的方法。我怎樣才能做到這一點?

最佳答案

讓它只運行一次,並捕獲Completed事件,而不是具有Forever的RepeatBehavior。進行處理,然後使用正確的DependencyProperty和動畫調用BeginAnimation。

例如,這是一個(無可否認的愚蠢)例子,以顯示我的意思。

XAML:


    
        
            

                
                
                
            
        
    
    
        
            
                
                    
                        
                        
                        
                    
                
            
        
    

代碼背後:

private void changeColor3_Completed(object sender, EventArgs e)
{
    Color3.BeginAnimation(GradientStop.ColorProperty, changeColor3);
}

請註意,盡管已在動畫中聲明,但已完成事件位於故事板上。如果您在其他一些動畫中將RepeatForever設置為true,則永遠不會觸發該事件。

轉載註明原文: WPF動畫重復時如何觸發事件處理程序