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);
当调用该方法时,会出现所需的元素,但没有颜色动画。我做错了什么?
我要直接告诉你,我只做过一次代码动画,它是可怕的。然后我在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
属性,因为你有一个适当的引用,而不仅仅是名称。