【发布时间】:2012-02-17 01:30:53
【问题描述】:
使用 WPF 3.5 我想移动画布,并在完成此动画后使用第二个故事板进一步移动它。我有以下内容:
<Storyboard x:Key="Move" Completed="OnMoveCompleted" AutoReverse="False" FillBehavior="HoldEnd">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="canvas">
<SplineDoubleKeyFrame KeyTime="0:0:1.5" Value="-50"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="Move2" AutoReverse="False">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="canvas">
<SplineDoubleKeyFrame KeyTime="0:0:1.5" Value="-75"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
在代码后面我得到了:
public void OnMoveCompleted(object sender, EventArgs e)
{
var moveStoryboard = (Storyboard)FindResource("Move2");
moveStoryboard.Begin();
}
Move2 仅将画布移动 75 - 50 = 25 像素。我希望画布先移动 50 像素,然后再移动 75 像素。我认为它可以工作,因为 FillBehaviour="HoldEnd" 所以下一个故事板可以使用来自第一个故事板的转换后的 Y 属性值,但似乎第二个故事板只适用于初始值(尽管画布似乎没有跳回到最开始,至少在视觉上)。
除了将转换放入一个故事板之外,我还需要一个解决方案。
【问题讨论】:
-
我发现 TargetName 不能出现在超过 1 个 Storyboard 中,但我希望你能找到解决办法。
-
感谢您的回答,但我认为这不是问题所在。在查看了所有相关属性后,我终于找到了解决方案。我会尽快发布(发布问题后会被罚 8 小时)
标签: .net wpf animation storyboard