2011-03-24 19 views
7

WPF denetiminde herhangi bir animasyonunun işlenip işlenmediğini belirlemenin hızlı bir yolu var mı.WPF Animasyon: Herhangi bir animasyon devam edip edilmediğini algıla?

Ağaç düğümlerinin genişlemesini canlandırdığım bir ağaç izim var ve odaklanmış öğeyi görünümüne kaydırmadan önce tüm animasyonların tamamlanmasını beklemek istiyorum. Tüm hikaye tahtalarımın ilerlemesini bağımsız olarak izlememeyi tercih ederim.

İdeal benim sözde kodu şöyle görünecektir:

myTreeView.ExpandAll(); // I have written this part 

while (myTreeView.IsAnimating()) // I need the 'IsAnimating' property or extension method 
{ 
    // wait 
} 

selectedTreeviewItem.BringIntoView(); // I have written this too. 
+1

StoryBoard "Tamamlandı" etkinliğini denediniz mi? – codymanix

+0

Animasyonlu çoklu hikaye tahtaları olduğundan (genişleyen her ağaç görünümü öğesi için bir tane), sonuncunun ne zaman tamamlanacağını bildiğimden emin değilim. –

+0

Bu nedenle, yalnızca bir storyboard'unuzda bir sayı artırın, olayları başlatın ve tamamlanmış olaylardaki sayacı azaltın ve eğer sayaç azalmadan sonra sıfırsa, tüm animasyonlar tamamlanır. –

cevap

0

Neden kullanmak film şeridi en completed event? Bir etkinlik veya farklı bir iş parçacığı kullanmanız gerekecek veya UI iş parçacığını while ifadenizle engelleyecek ve hiçbir animasyon oynamayacaktır.

+1

Bundan kaçınmaya çalıştığım şey, aynı anda 1 ve x animasyonlar arasında herhangi bir yeri tetiklediğimden ... bu benim düşünmem gereken bir geri dönüş seçeneğidir. –

+0

Cevabınız aslında budur. Eksik olan şey, tüm animasyonu izleyebilmem için myTreeView'in statik yapıcısında EventManager.RegisterClassHandler (..., Storyboard.CompletedEvent, ...) kullanıyordu. –

+0

Animasyon döngü halinde ne olur? Bu işe yaramaz. – ProgrammerAtWork