情节提要动画

本文关键字:动画 | 更新日期: 2023-09-27 18:22:01

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

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);
}

情节提要动画

是否在某处设置了UserControl的Name属性?或者更准确地说,您给第二个UserControl的名称与第一个不同吗?你的动画由设定目标

Storyboard.SetTargetName(tAnimation, uc.Name);

所以名字应该不同。或者,您可以致电

Storyboard.SetTarget(tAnimation, uc);

以指定目标。