0
我正在设计一个自定义按钮,并且想要将它的背景更改为LinearGradientBrush
,时间为MouseOver
。这是我的尝试:动画Button.Background到MouseOver上的LinearGradientBrush
<UserControl Height="Auto" Width="Auto">
<UserControl.Resources>
<LinearGradientBrush x:Key="toBackgroundBrush" EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFC8C8C8" Offset="1"/>
<GradientStop Color="#FF626161" Offset="0.599"/>
<GradientStop Color="#FF787878" Offset="0.497"/>
<GradientStop Color="#FF939393" Offset="1"/>
</LinearGradientBrush>
</UserControl.Resources>
<Grid>
<Button Content="Button" Foreground="#FFFFFEFE" Height="30" Width="120">
<Button.Background>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="#FFC8C8C8" Offset="0"/>
<GradientStop Color="#FF626161" Offset="0.539"/>
<GradientStop Color="#FF787878" Offset="0.467"/>
<GradientStop Color="#FF939393" Offset="1"/>
</LinearGradientBrush>
</Button.Background>
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetProperty="Background"
AutoReverse="True"
Duration="0:0:0.25"
To="{StaticResource toBackgroundBrush}">
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Grid>
然而,当我运行代码,我得到这个异常:
Cannot convert the value in attribute 'To' to object of type
'System.Nullable`1[[System.Windows.Media.Color, PresentationCore, Version=3.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35]]'.
'System.Windows.Media.LinearGradientBrush' is not a valid value for property 'To'.
我最初打算动画在Blend的MouseOver
事件,但没不会覆盖默认模板,所以我最终使用故事板进行“手动”操作。我不明白为什么LinearGradientBrush
对于属性To
不是有效值,因为To
确实指向按钮上的Background
属性。任何帮助表示赞赏。
看看这个SO问题是否有帮助http://stackoverflow.com/questions/4050032/animation-change-from-lineargradientbrush-to-solidcolorbrush –
@MarkHall我试过了......不改变任何东西,颜色保持不变更改为默认的Windows按钮样式。 – PoweredByOrange
“笔刷”不是“颜色”。因此,您不能使用ColorAnimation对'Brush'类型的'Background'进行动画制作,并且不能将'Brush'分配给'Color'类型的'To'属性。 – Clemens