2016-04-10 39 views
0

Bir animasyondan sonra kontrolü addServer kaldırmak istiyorum. Bunu nasıl yapabilirim? Bunu bir Görev veya Konu ile yapmak zorunda kalırsam, öğeyi kaldırabilmek için doğru yolu nasıl çağırırım?Animasyondan sonra kontrolü silme

Benim silme yöntemi şöyle görünür:

Main.Children.Remove(addServer); 
addServer = null; 

Düzenleme

Benim son çözüm şöyle görünür:

// Adding a evh to the storyboard calling after the animation has finished 
// Used a lambada to pass my control as a param in my delete method 
storyboard.Completed += (s, ea) => DeleteAddServerPanel(storyboard, addServer); 
storyboard.Begin(); 

Ve silme yöntemi

private void DeleteAddServerPanel(Storyboard storyboard, AddServer addServer) 
{ 
    Main.Children.Remove(addServer); 
    addServer = null; 
} 

Bu, kontrolü ayrı bir iş parçacığına ihtiyaç duymadan çıkarmayı mümkün kılar, böylece çağırmaya bile gerek duymuyorum. ne soruyorsun ana iş parçacığı dışında başka bir iş parçacığı üzerinde bunu nasıl olursa

+0

Problemin sizin yönteminizde ne olduğunu düşünüyorsunuz? – ozgur

cevap

1

:

Application.Current.Dispatcher.BeginInvoke(
     DispatcherPriority.Background, 
     new Action(() => Main.Children.Remove(addServer);)); 

Ancak olmadıkça ben şahsen bu şekilde başka iş parçacığı üzerinde UI manipülasyon tavsiyede olmadığını unutmayın sadece seçenek.

+0

Peki bunun için başka bir çözüm var mı? Kontrol silindiyse bir eventhandler gibi bir şey mi? Başka bir çözüm var mı bilmiyorum. – chris579

+0

@ chris579, gereksiniminiz benim için net değil, ancak WPF silinmiş bir etkinlik türü sunmuyor, ancak Unloaded olayını kullanabilirsiniz. – Firoz

+0

Haklısın ama başka bir şekilde yaptım. Gönderiyi güncelliyorum. – chris579

İlgili konular