wpf - 为什么 ColorAnimation 无法使用 TargetProperty ="Fill"工作?

标签 wpf xaml coloranimation

我正在尝试在 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/

相关文章:

wpf - 使用 ColorAnimation 更改 StackPanel 背景颜色

c# - 用于显示程序集名称的数据绑定(bind)

c# - 从 .NET 3.5 到 4 似乎打破了旧版 XAML

c# - 使用MVVM结构的DataGrid中的单元格单击事件

c# - 如何使用 Xaml 和绑定(bind)自动滚动到 ScrollViewer 的底部?

画笔属性的 WPF ColorAnimation

c# - Excel 2013 崩溃

c# - 在 XAML ResourceDictionary 中绑定(bind)

xaml - TitleView 未覆盖整个工具栏

Window.Resources 内的 WPF ColorAnimation