为什么使用 TargetProperty="Fill" 时 ColorAnimation 不起作用?

Why doens't ColorAnimation work using TargetProperty="Fill"?

我正在尝试在 WPF 中制作滑块控件。所以我有一个椭圆在滑动时将其颜色更改为绿色。我使用 Storyboard.TargetProperty=Fill

尝试了这段代码
<ColorAnimation Storyboard.TargetName="ball" Storyboard.TargetProperty="Fill.Color" From="Red" To="LightGreen" Duration="0:0:0.3"/>

但是没有用。我做了一些研究,意识到它需要 Fill.Color。通常Ellipse有一个Fill属性要填。为什么需要 Color 扩展名?

Fill 是笔刷类型而不是颜色类型。 有默认转换器允许您在 XAML 中使用简化的符号,例如 Fill="Red",但这意味着您将 Fill 设置为 SolidColorBrush Red

的颜色

A ColorAnimation 根据其名称将在颜色而非画笔之间设置动画,因此您需要获取 Fill 的颜色 属性(在您的情况下填充是 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"/>