我正在尝试在WPF中进行coloranimation,以便新显示的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);
调用方法时,会出现所需的元素,但没有颜色动画。我做错了什么?
答案 0 :(得分:0)
我会直接告诉你,我只在代码中完成了一次动画,这很可怕。然后我在VS2008中的XAML中动画了一个动画,它很可怕。然后我得到了copy of Expression Blend并在设计师中制作了动画......
这样更容易,而且看起来更好,因为我可以更准确地控制动画。帮自己一个忙,得到Blend,这是完全值得的。它需要一点点习惯,但从长远来看,这将节省大量时间。
答案 1 :(得分:0)
你说的太复杂了,我会说,你只有一个动画,所以不需要故事板,只需在画笔上调用BeginAnimation
就可以了。 e.g。
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);
此外,如果您必须在代码后面使用故事板,请 not 使用TargetName
属性,而只使用Target
属性,因为您有适当的参考而不仅仅是这个名字。