2016-08-24 52 views
1

我想在WPF中製作滑塊控件。所以我有一個橢圓,當它滑動時將它的顏色變成綠色。我試過這個代碼使用Storyboard.TargetProperty=Fill爲什麼doens的ColorAnimation使用TargetProperty =「Fill」?

<ColorAnimation Storyboard.TargetName="ball" Storyboard.TargetProperty="Fill.Color" From="Red" To="LightGreen" Duration="0:0:0.3"/> 

但它沒有奏效。我做了一些研究,並意識到它需要是Fill.Color。通常Ellipse有一個Fill屬性被填充。爲什麼它需要Color擴展名?

回答

1

Fill是一個畫筆類型不是顏色類型。 到位有默認的轉換器,讓您在您的XAML使用簡化的符號,如Fill="Red",但所有的意思是,你用的Red

一個ColorAnimation按照它的名字的顏色設置,FillSolidColorBrush會在顏色之間進行動畫而不是畫筆,因此您需要轉到Fill的Color屬性(在您的情況下,填充是一個SolidColorBrush,它具有Color屬性)。

作爲一個附加的例子,如果你設置你的Fill到更復雜的刷機,如一個LinearGradientBrush,你仍然可以操縱的ColorAnimation梯度但語法變得複雜得多:

<ColorAnimation Storyboard.TargetName="ball" 
       Storyboard.TargetProperty="Fill.(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)" 
       From="Red" To="LightGreen" Duration="0:0:0.3"/> 
+0

很好的解釋。 WPF非常複雜,我需要更多練習。感謝你的回答。 –

相關問題