簡體   English   中英

由於對象已密封或凍結,因此無法設置顏色屬性的動畫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM