故事板动画

时间:2012-01-29 15:57:33

标签: c# wpf animation storyboard

我制作了一个小的WPF应用程序来滑入和移出UserControl,我遇到的问题是当一个UserControl动画滑入时,然后我点击按钮滑动另一个UserControl,它们都滑出来 - 我不确定为什么会这样?

public UserControl1()
{
    InitializeComponent();
}

public void SlideIn(UserControl uc)
{
    ThicknessAnimation tAnimation = new ThicknessAnimation();
    tAnimation.Duration = new Duration(TimeSpan.FromSeconds(0.5));
    tAnimation.From = new Thickness(500, 0, -500, 0);
    tAnimation.To = new Thickness(0);
    tAnimation.DecelerationRatio = 0.9;

    Storyboard.SetTargetName(tAnimation, uc.Name);
    Storyboard.SetTargetProperty(tAnimation, new PropertyPath(MarginProperty));

    Storyboard storyboard = new Storyboard();
    storyboard.Children.Add(tAnimation);
    storyboard.Begin(uc);
    this.Content = uc;
}

public void SlideOut(UserControl uc)
{
    ThicknessAnimation tAnimation = new ThicknessAnimation();
    tAnimation.Duration = new Duration(TimeSpan.FromSeconds(0.5));
    tAnimation.To = new Thickness(-500, 0, 500, 0);
    tAnimation.DecelerationRatio = 0.9;

    Storyboard.SetTargetName(tAnimation, uc.Name);
    Storyboard.SetTargetProperty(tAnimation, new PropertyPath(MarginProperty));

    Storyboard storyboard = new Storyboard();
    storyboard.Children.Add(tAnimation);
    storyboard.Begin(this);
}

private void button1_Click(object sender, RoutedEventArgs e)
{
    SlideOut(userControl1);
    UserControl2 uc2 = new UserControl2();
    SlideIn(uc2);
}

1 个答案:

答案 0 :(得分:1)

您是否在某处设置了UserControl的Name属性?或者更确切地说,您是否为第二个UserControl提供了与第一个不同的名称?您的动画通过

设置目标
Storyboard.SetTargetName(tAnimation, uc.Name);

因此名称应该不同。或者,您可以致电

Storyboard.SetTarget(tAnimation, uc);

指定目标。