故事板动画

问题描述:

我做了一个小的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); 
} 
+0

我试过'storyboard.Begin(uc);'但结果相同。 – Michael 2012-01-29 16:07:13

您是否将UserControl的Name属性设置在某处?或者更准确地说,你是否给第二个用户控件一个不同于第一个的名称?您的动画通过设置为

Storyboard.SetTargetName(tAnimation, uc.Name); 

因此名称应该不同。您也可以致电

Storyboard.SetTarget(tAnimation, uc); 

指定目标。

+0

我在XAML中设置了Name属性,两个UserControl都有不同的名称。我只是尝试'Storyboard.SetTarget(tAnimation,uc);'但仍然是一样的......如果有人会感兴趣,我可以上传这个应用程序,如果你想尝试? – Michael 2012-01-29 16:48:12

+0

是的,继续... – Clemens 2012-01-29 16:51:19

+0

我上传到Dropbox的公共文件夹,应该可以被所有人访问 - http://dl.dropbox.com/u/6727433/MyOwnLibrary.zip – Michael 2012-01-29 16:58:34