在做故事板动画之前如何暂停

时间:2014-02-22 23:45:34

标签: wpf xaml storyboard

我有这个故事板,当你将鼠标悬停在网格上时开始:

<Storyboard x:Key="SB_MouseEnter">
   <DoubleAnimation To="0" Storyboard.TargetName="gridNav"
                    Storyboard.TargetProperty="(UIElement.RenderTransform).
                                                        (TranslateTransform.Y)" 
                    Duration="0:0:0.2"/>
</Storyboard>

我想在它动画之前将鼠标悬停在它上500ms。如何做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以使用DispatcherTimer classUIElement.MouseEnterUIElement.MouseLeave事件一起等待500毫秒,然后使用Begin方法手动启动Storyboard 。尝试这样的事情:

private DispatcherTimer timer;

private void OnMouseEnterHandler(object sender, MouseEventArgs e)
{
    timer = new DispatcherTimer();
    timer.Interval = new TimeSpan(0, 0, 0, 0, 500);
    timer.Tick += Timer_Tick;
    timer.Start();
}

private void OnMouseLeaveHandler(object sender, MouseEventArgs e)
{
    timer.Stop();
}

private void Timer_Tick(object sender, EventArgs e)
{
    SB_MouseEnter.Begin();
    timer.Stop();
}

答案 1 :(得分:1)

在故事板上指定您希望时间轴开始的BeginTime(在您的情况下为0.5秒):

<DoubleAnimation To="0" Storyboard.TargetName="gridNav"
                 Storyboard.TargetProperty="(UIElement.RenderTransform).
                                                        (TranslateTransform.Y)" 
                 Duration="0:0:0.2"
                 BeginTime="0:0:0.5"/>