コントロールのフォアグラウンドの値を使用して、ControlTemplateのVisualStateColorAnimationのソースとして使用したいと思います。
私のテンプレート定義は、主にToggleButtonの標準テンプレートに似ていますが、いくつかのmodがあります(<<< ..... >>>とマークされています)。
<Style TargetType="ToggleButton>
<Setter .../>
...
<<< <Setter Property="Foreground" Value="#FF000000"/> >>>
...
<Setter .../>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState .../>
<VisualState x:Name="PointerOver">
<Storyboard>
<ColorAnimation Duration="0" Storyboard.Target="BackgroundGradient" Storybord.TargetProperty="(Rectangel.Fill).(GradientBrush.GradientStop)[1].(GradientStopColor)" <<< To="{Binding Foreground, RelativeSource={RelativeSource TemplatedParent}}" >>> />
</Storyboard>
</VisualState>
...
...
...
</Style>
...
...
<ToggleButton <<< Foreground="#FFFF0000" >>> ...../>
そのため、アニメーションがマウスオーバーアニメーションの一部として設定された前景色(#FFFF0000)を使用することを期待していましたが、まったく何もしませんでした。アニメーション定義にTo="#FFFF0000"と書くと、期待どおりの結果が得られますが、アニメーションの色を動的に保ち、アプリのToggleButtonごとに異なる色にしたいです。
これを修正する方法はありますか?
お願いします!
編集:1つのGradientStopを{TemplateBinding Foreground}にバインドする必要があるContentPresenterにLinearGradientBrushを使用して新しいRectangleを追加することにより、上記と同様の効果を達成しようとした後、問題の理由を明らかにする可能性のあるエラーが発生します。タイプ「Windows.UI.xaml.DependencyProperty」をタイプ「System.Windows.DependencyProperty」に変換することはできません。」{TemplateBinding ...}が間違ったタイプのDependencyPropertyを生成するか、GradientStopがWindowsストアアプリで間違ったタイプを予期しているようです。でも!XAMLでの明示的な型キャストまたはその他の回避策によってこれを克服する方法はありますか?
ありがとう