我有一组控件(Button,ToggleButton)我想拥有相同的样式,所以我在ResourceDictionary中为普通/禁用/启用状态创建了一些渐变画笔,例如“ButtonFillBrush”,“ButtonFillMouseOverBrush”等。这些被定义为全局可重用的画笔资源。
我知道可以在状态内的动画中更改渐变的各个停靠点,例如:
<VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimation Duration="0" To="#FF041D06" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="path" d:IsOptimized="True"/>
<ColorAnimation Duration="0" To="#FF118519" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)" Storyboard.TargetName="backgroundRectangle" d:IsOptimized="True"/>
</Storyboard>
</VisualState>
现在,我知道在VisualState Manager中可以执行以下操作:
<VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimation Duration="0" To="ButtonFillMouseOverBrush" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush)" Storyboard.TargetName="backgroundRectangle" d:IsOptimized="True"/>
</Storyboard>
</VisualState>
谢谢!
更新:使用有关使用StaticResource引用的答案以及更多搜索:http://wildermuth.com/2008/07/18/Animating_Brushes_with_ObjectAnimationUsingKeyFrames
<VisualState x:Name="MouseOver">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="backgroundRectangle"
Storyboard.TargetProperty="Fill">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource ButtonFillMouseOverBrush}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
所以,拥有一个BrushAnimation或其他东西会很好......
罗吉尔
答案 0 :(得分:0)
您可以找到有关资源词典和资源的更多信息。使用它们here。但是,对于您的颜色动画问题,可以在此链接上找到有关Silverlight动画(包括颜色动画)的大量信息Silverlight Animations Quickstart