故事板动画
我做了一个小的WPF应用程序来滑动UserControls进出,我遇到的问题是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);
}
您是否将UserControl的Name属性设置在某处?或者更准确地说,你是否给第二个用户控件一个不同于第一个的名称?您的动画通过设置为
Storyboard.SetTargetName(tAnimation, uc.Name);
因此名称应该不同。您也可以致电
Storyboard.SetTarget(tAnimation, uc);
指定目标。
我在XAML中设置了Name属性,两个UserControl都有不同的名称。我只是尝试'Storyboard.SetTarget(tAnimation,uc);'但仍然是一样的......如果有人会感兴趣,我可以上传这个应用程序,如果你想尝试? – Michael 2012-01-29 16:48:12
是的,继续... – Clemens 2012-01-29 16:51:19
我上传到Dropbox的公共文件夹,应该可以被所有人访问 - http://dl.dropbox.com/u/6727433/MyOwnLibrary.zip – Michael 2012-01-29 16:58:34
我试过'storyboard.Begin(uc);'但结果相同。 – Michael 2012-01-29 16:07:13