Não é possível animar a propriedade color porque o object está selado ou congelado

Eu tenho visto outros problemas semelhantes, mas eles sempre parecem estar fazendo isso em XAML, uma vez que este é um manipulador de events eu preciso descobrir a resposta em c #. basicamente eu só preciso do item de menu de envio para piscar vermelho.

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); 

Você teria que atribuir uma instância de SolidColorBrush mutável à propriedade Foreground do elemento antes que ela pudesse ser animada, seja em XAML ou em código por trás:

 var item = (MenuItem)sender; item.Foreground = new SolidColorBrush(Colors.Black); item.Foreground.BeginAnimation(SolidColorBrush.ColorProperty, ca); 

Se você animar a partir do valor de cor atual (por exemplo, Black aqui), não é necessário definir a propriedade From da animação.


Note também que você não deve usar o operador as sem verificar se o resultado é null . Melhor usar um tipo explícito de conversão em vez de as , porque caso o sender não seja um MenuItem , você obterá corretamente um InvalidCastException vez de um NullReferenceException .