[英]Cannot animate the color property because the object is sealed or frozen
我见过其他类似的问题,但是他们似乎总是在XAML中这样做,因为这是在事件处理程序中,因此我需要找出c#中的答案。 基本上,我只需要发送菜单项闪烁红色即可。
ColorAnimation ca = new ColorAnimation()
{
From = Color.FromRgb(0, 0, 0),
To = Color.FromRgb(255,0,0),
AutoReverse = true,
RepeatBehavior = new RepeatBehavior(3),
Duration=new Duration(TimeSpan.FromSeconds(.5))
};
(sender as MenuItem).Foreground.BeginAnimation(SolidColorBrush.ColorProperty, ca);
您必须先为元素的Foreground
属性分配一个可变的SolidColorBrush
实例,然后才能在XAML或后面的代码中对其进行动画处理:
var item = (MenuItem)sender;
item.Foreground = new SolidColorBrush(Colors.Black);
item.Foreground.BeginAnimation(SolidColorBrush.ColorProperty, ca);
如果从当前颜色值(例如,此处为“ Black
)进行动画处理,则不必设置动画的From
属性。
还要注意,在不检查结果是否为null
情况下,不应使用as
运算符。 最好使用显式类型转换,而不是as
,因为如果sender
不是MenuItem
,则可以正确获取InvalidCastException
而不是NullReferenceException
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.