我想使用代码隐藏在 TextBlock 中对颜色变化进行动画处理,将文本从黑色更改为红色,但它不会从黑色更改为红色,也不会产生编译时或运行时错误。
这就是我的代码的外观。我希望它在我有评论的第 21 行变为红色。它保持黑色。
TextBlock tb2= new TextBlock();
tb2.Inlines.Add("An example on ");
ColorAnimationUsingKeyFrames colorAnimation = new
ColorAnimationUsingKeyFrames();
Color redColor = new Color();
SolidColorBrush animatedBrush = new SolidColorBrush();
animatedBrush.Color = Color.FromArgb(255, 0, 0, 0); //start black
tb2.Foreground = animatedBrush;
this.RegisterName(
"AnimatedBrush", animatedBrush);
colorAnimation.Duration = TimeSpan.FromSeconds(6);
redColor = Color.FromArgb(255, 255, 0, 0);//set red color
colorAnimation.KeyFrames.Add(
new LinearColorKeyFrame(
redColor, // Target value (KeyValue)
KeyTime.FromTimeSpan(TimeSpan.FromSeconds(0.5))));
Storyboard.SetTargetName(animatedBrush, "AnimatedBrush");//change to new color
Storyboard.SetTargetProperty(
colorAnimation, new
PropertyPath(SolidColorBrush.ColorProperty));
Storyboard myStoryboard = new Storyboard();
myStoryboard.Children.Add(colorAnimation);
Button butonier = new Button();
butonier.Content = "klikaj";
this.RegisterName("butonier", butonier);
sPanel.Children.Add(butonier);
butonier.Click += delegate (object sender, RoutedEventArgs e)
{
myStoryboard.Begin(this);
};
this.Content = sPanel; //stackpanel
你能告诉我我做错了什么吗?
主要问题在于这一行:
Storyboard.SetTargetName(animatedBrush, "AnimatedBrush");
它应该是:
Storyboard.SetTargetName(colorAnimation, "AnimatedBrush");
您也没有将文本块添加到堆栈面板。这可以转到您添加按钮的位置旁边。
sPanel.Children.Add(tb2);
如果这不能满足您的需求,请使用更多信息编辑您的问题。