2012-10-23 4 views
0

redimensionner un panneau de dock comme celui-ci:DockPanel animation, après redimensionnement VB

Private WithEvents PanelAnimation As New DoubleAnimation 
Private WithEvents PanelSB As New Storyboard 

With PanelAnimation 
     .From = WpfDockPanel.ActualHeight 
     .To = s 
     .Duration = New Duration(TimeSpan.FromSeconds(0.5)) 
     .AccelerationRatio = 0.5 
     .DecelerationRatio = 0.5 
End With 
PanelSB.Children.Add(PanelAnimation) 
Storyboard.SetTarget(PanelAnimation, WpfDockPanel) 
Storyboard.SetTargetProperty(PanelAnimation, New PropertyPath(DockPanel.HeightProperty)) 
PanelSB.Begin(AviMainWindow) 

..which fonctionne très bien. Ensuite, je veux définir manuellement la taille, mais cela ne changera pas, si j'arrête le code et que je tape une taille différente, la taille ne changera pas, c'est comme si elle était en lecture seule.

Mais si je change la taille une fois, pas en animant, juste en réglant la taille, je peux la changer à nouveau sans problème. Pourquoi ne puis-je pas régler manuellement la hauteur après l'animation?

Merci

Répondre

2

C'est parce que FillBehavior de l'animation est mis à HoldEnd par défaut. Vous pouvez le définir sur Stop.

Vous devez cependant également définir manuellement la propriété Height de la cible d'animation sur la valeur de fin souhaitée avant de démarrer l'animation. Sinon, il reviendrait à la valeur qu'il avait avant le démarrage de l'animation.

With PanelAnimation 
     .FillBehavior = FillBehavior.Stop 
     ... 

... 
WpfDockPanel.Height = s 
PanelSB.Begin(AviMainWindow) 
+0

PARFAIT! Facile quand tu sais comment. – Ianb

0

Vous devez probablement supprimer la valeur appliquée par l'animation. Quelque chose comme

WpfDockPanel.BeginAnimation(DockPanel.HeightProperty, null) 

devrait faire l'affaire.

Questions connexes