Storyboard.SetTarget与Storyboard.SetTargetName

为什么Storyboard.SetTargetName有效,但Storyboard.SetTarget却没有? 在这里xaml –

            

在这里C#

 private void smartContent_ContentChanging(object sender, RoutedEventArgs e) { Storyboard storyBoard = new Storyboard(); DoubleAnimation doubleAnimation1 = new DoubleAnimation(0.0, -smartContent.RenderSize.Width, new Duration(new TimeSpan(0, 0, 0, 0, 500))); DoubleAnimation doubleAnimation2 = new DoubleAnimation(smartContent.RenderSize.Width, 0.0, new Duration(new TimeSpan(0, 0, 0, 0, 500))); doubleAnimation1.AccelerationRatio = 0.5; doubleAnimation2.DecelerationRatio = 0.5; storyBoard.Children.Add(doubleAnimation1); storyBoard.Children.Add(doubleAnimation2); Storyboard.SetTarget(doubleAnimation1, this.translateTransformLast); //--- this does not work //Storyboard.SetTargetName(doubleAnimation1, "translateTransformLast"); -- this works Storyboard.SetTargetProperty(doubleAnimation1, new PropertyPath(TranslateTransform.XProperty)); Storyboard.SetTarget(doubleAnimation2, this.translateTransformNew);//--- this does not work //Storyboard.SetTargetName(doubleAnimation2, "translateTransformNew"); -- this works Storyboard.SetTargetProperty(doubleAnimation2, new PropertyPath(TranslateTransform.XProperty)); if (smartContent.LastImage != null) storyBoard.Begin(); } 

我在这里找到了答案! 当我使用故事板时,为什么这些动画不起作用?

故事板无法激活TranslateTransform,因为它不是UIElement。 这就是我现在的表现! 🙂

  Storyboard.SetTarget(doubleAnimation1, this.lastImage); Storyboard.SetTargetProperty(doubleAnimation1, new PropertyPath("RenderTransform.(TranslateTransform.X)")); Storyboard.SetTarget(doubleAnimation2, this.smartContent); Storyboard.SetTargetProperty(doubleAnimation2, new PropertyPath("RenderTransform.(TranslateTransform.X)"));