ColorAnimation help?

本文关键字:help ColorAnimation | 更新日期: 2023-09-27 18:01:42

我正在尝试在WPF中做一个颜色动画,以便新暴露的UI元素出现红色边框,随着时间的推移逐渐变白。下面是我的代码:

        SolidColorBrush toFade = new SolidColorBrush(Colors.Red);
    private void showElement(SuperTB.SuperTextB toShow)
    {
        toShow.Visibility = Visibility.Visible;
        toShow.BorderBrush = toFade;
        ColorAnimation fadeToWhite = new ColorAnimation();
        fadeToWhite.To = Colors.White;
        fadeToWhite.Duration = TimeSpan.FromSeconds(1);
        Storyboard.SetTargetName(fadeToWhite, "toFade");
        Storyboard.SetTargetProperty(fadeToWhite, new PropertyPath(SolidColorBrush.ColorProperty));
        Storyboard fade = new Storyboard();
        fade.Children.Add(fadeToWhite);
        fade.Begin(this);
    }

在我的MainWindow构造函数中,我有

this.RegisterName("toFade", toFade);

当调用该方法时,会出现所需的元素,但没有颜色动画。我做错了什么?

ColorAnimation help?

我要直接告诉你,我只做过一次代码动画,它是可怕的。然后我在VS2008中用XAML手工制作了一个动画,非常可怕。然后我得到了Expression Blend的副本,并在设计器中动画…

这么容易,而且它看起来更好,因为我可以更准确地控制动画。帮你自己个忙,去找布兰吧,绝对值得。这需要一点时间来适应,但从长远来看,这将节省大量的时间。

你把事情弄得太复杂了,我想说,你只有一个动画,所以不需要故事板,只要在Brush上调用BeginAnimation就可以了。例如

Action<TextBox> animMethod = (TextBox x) =>
    {
        var brush = new SolidColorBrush(Colors.Red);
        x.Visibility = Visibility.Visible;
        x.BorderBrush = brush;
        brush.BeginAnimation(SolidColorBrush.ColorProperty, new ColorAnimation(Colors.White, TimeSpan.FromSeconds(1)));
    };
animMethod(tbtest);

另外,如果你必须在后面的代码中使用故事板,不要使用TargetName属性,而只是使用Target属性,因为你有一个适当的引用,而不仅仅是名称。