gpt4 book ai didi

c# - 'ColorAnimation' 动画对象不能用于动画属性 'Background' 因为它是不兼容的类型 'System.Windows.Media.Brush'

转载 作者:太空宇宙 更新时间:2023-11-03 21:07:43 24 4
gpt4 key购买 nike

我试图以编程方式使用 ColorAnimation 来为单元格设置动画,但我在执行 storyboard.Begin()

时得到了这个
'System.Windows.Media.Animation.ColorAnimation' animation object cannot be used to animate property 'Background' because it is of incompatible type 'System.Windows.Media.Brush'.

我已经将我的 ColorAnimation 定义为

var storyBoard = new  Storyboard();
ColorAnimation colorAnimation = new ColorAnimation
{
From = Colors.Red,
To = Colors.CornflowerBlue,
Duration = TimeSpan.FromSeconds(1),
FillBehavior = FillBehavior.Stop
};

关于它的用法

if (column.UniqueName != "_ID")
{
var animation = animationMapping[column.UniqueName].Animation;
var storyboard = animationMapping[column.UniqueName].Storyboard;

Storyboard.SetTarget(animation, cell.Content as TextBlock);
//Storyboard.SetTargetProperty(animation,
// new PropertyPath((TextBlock.Foreground).Color"));

PropertyPath colorTargetPath = new PropertyPath(TextBlock.BackgroundProperty);
Storyboard.SetTargetProperty(animation, colorTargetPath);

storyboard.Begin();
}

我必须将什么参数传递给新的 PropertyPath?我试着关注 this example但没有任何运气。

最佳答案

您必须为 BrushColor 指定正确的 PropertyPath

所以代替

PropertyPath colorTargetPath = new PropertyPath(TextBlock.BackgroundProperty);

你必须使用

PropertyPath colorTargetPath =
new PropertyPath("(0).(1)", TextBlock.BackgroundProperty, SolidColorBrush.ColorProperty);

这相当于链接答案的 XAML 中的 Storyboard.TargetProperty="(TextBlock.Background).Color"

现在它应该可以工作了 - 至少如果 TextBlock.Background 的现有 BrushSolidColorBrush。如果没有,您必须调整 PropertyPath 以适应您的 Brush 类型。

关于c# - 'ColorAnimation' 动画对象不能用于动画属性 'Background' 因为它是不兼容的类型 'System.Windows.Media.Brush',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40112491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com