我正在尝试在 WPF 中制作 slider 控件。所以我有一个椭圆在滑动时将其颜色更改为绿色。我使用 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
ColorAnimation
根据其名称将在颜色而不是画笔之间进行动画处理,因此您需要获取 Fill
的 Color 属性(在您的情况下,填充是 SolidColorBrush它具有 Color
属性)。
作为另一个示例,如果您要将 Fill
设置为更复杂的 Brush(例如 LinearGradientBrush),您仍然可以在 ColorAnimation
中操作渐变,但语法变得更加复杂:
<ColorAnimation Storyboard.TargetName="ball"
Storyboard.TargetProperty="Fill.(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)"
From="Red" To="LightGreen" Duration="0:0:0.3"/>
关于wpf - 为什么 ColorAnimation 无法使用 TargetProperty ="Fill"工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39132747/