为什么使用 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"/>
我正在尝试在 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"/>