在动画,VB之后调整dockpanel

时间:2012-10-23 09:45:57

标签: wpf

我像这样调整停靠面板的大小:

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)

..工作正常。然后,我想手动设置大小,但它不会改变,如果我停止代码并输入不同的大小,大小不会改变,就好像它只是readonly。

但如果我改变一次大小,而不是通过动画,只需设置大小,我可以再次改变它没问题。为什么我不能在动画制作后手动设置高度?

由于

2 个答案:

答案 0 :(得分:2)

这是因为默认情况下动画的FillBehavior设置为HoldEnd。您可以将其设置为Stop

然而,在开始动画之前,您还必须手动将动画目标的Height属性设置为所需的最终值。否则它将翻转回动画开始前的值。

With PanelAnimation
        .FillBehavior = FillBehavior.Stop
        ...

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

答案 1 :(得分:0)

可能您需要删除动画应用的值。像

这样的东西
WpfDockPanel.BeginAnimation(DockPanel.HeightProperty, null)

应该这样做。