在庫WPF GroupBoxコントロールをカスタマイズしています。私は、マウスポインタがコントロール領域に入ると、バックグラウンドのカラーアニメーションを実装する必要があります。たとえば、背景色をゆっくりと定義済みの色に変更します(ピンクにします)。ControlTemplate内のWPF Grid.BackgroundのColorAnimationのInvalidOperationException
<ControlTemplate TargetType="{x:Type GroupBox}">
<Grid Name="MainGrid" SnapsToDevicePixels="true">
<!-- Control layout stuff with ContentPresenter -->
</Grid>
<ControlTemplate.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard>
<ColorAnimation
Storyboard.TargetName="MainGrid"
Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"
To="Pink" Duration="0:0:1" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
しかし、私はこのアニメーションを動作させることはできません。私は、カスタムコントロールテンプレートを作成しました。
「System.InvalidOperationExceptionが」このような追加情報で PresentationFramework.dllで発生しました::私はいつもタイプの未処理の例外を得る。 「背景」プロパティは、パス 」バックグラウンドでのDependencyObjectを指していません( 0) '
私はこの問題を尋ねました。それは、TargetPropertyをアニメーション化するための正しい構文を使用する必要があるようです。しかし、私は次のようなもののような変種の多くを試してみましたが、それらはすべて私の場合には動作しません:
Background.Color
(Panel.Background).Color
(Panel.Background).(SolidColorBrush.Color)
私が探しています正しい方向ではない?
を使用することができます。ブラシとして 'ピンク'を認識しない場合は、 'StaticResource'を使用する必要がありますが、あらかじめ定義されているカラー名であれば名前だけで動作するはずです。 – Adwaenyth
@Adwaenyth、確かに動作しません。追加情報: 'System.Windows.Media.Animation.ColorAnimation'アニメーションオブジェクトは、 'System.Windows.Media.Brush'型と互換性がないため、プロパティ 'Background'をアニメーション化するために使用することはできません。 – TecMan
Mh ... 'Storyboard.TargetProperty =(GroupBox.Background)。(SolidColorBrush.Color)'として試してみましょう。それは、[ここ](http://stackoverflow.com/questions/14158500/wpf-animate)のように動作しますか? - バックグラウンドカラー)? – Adwaenyth