同じスタイルにしたいコントロール (ボタン、トグルボタン) のセットがあるので、「ButtonFillBrush」、「ButtonFillMouseOverBrush」など、ResourceDictionary で通常/無効/有効状態のグラデーション ブラシをいくつか作成しました。グローバルな再利用可能なブラシ リソースとして定義されます。
状態内のアニメーションでグラデーションの個々のストップを変更できることはわかっています。たとえば、次のようになります。
<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か何かがあればいいのですが...
ロジェ