私は次のスタイルを使用してボーダーを持つWPFプロジェクトを持っています。マウスが境界を越えて移動するときには、グロー効果をフェードインし、離れるときはフェードアウトさせるという計画です。DropShadowEffectの不透明度をアニメーション化する方法は?
<Style x:Key="BorderGlow" TargetType="Border">
<Style.Resources>
<Storyboard x:Key="GlowOn">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(DropShadowEffect.Opacity)">
<SplineDoubleKeyFrame KeyTime="0:0:0.3" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="GlowOff">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(DropShadowEffect.Opacity)">
<SplineDoubleKeyFrame KeyTime="0:0:0.3" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Style.Resources>
<Setter Property="CornerRadius" Value="6,1,6,1" />
<Setter Property="BorderBrush" Value="{StaticResource SelectedBorder}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="Background" Value="{StaticResource DeselectedBackground}" />
<Setter Property="RenderTransformOrigin" Value="0.5,0.5" />
<Setter Property="TextBlock.Foreground" Value="{StaticResource SelectedForeground}" />
<Setter Property="RenderTransform">
<Setter.Value>
<RotateTransform Angle="90"/>
</Setter.Value>
</Setter>
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect ShadowDepth="0" BlurRadius="8" Color="#FFB0E9EF"/>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource GlowOn}"/>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource GlowOff}"/>
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
</Style>
問題は何も起こりません! Storyboard TargetPropertyで "DropShadowEffect"を "UIElement"に変更すると、アニメーションが機能しますが、これはコントロール全体をフェードします。
DropShadowEffectだけをフェードアウトするにはどうすればよいですか?
Opacityプロパティを持っています。 Effectの値は、私が目標にしようとしている不透明度プロパティを持つDropShadowEffectですが、私のXAMLが間違っていると指摘しています。 DropShadowEffectでx:Nameを設定しようとしましたが、スタイルでTargetNameを使用できません。 MSDNのドキュメントには、ストーリーボードでのこれらの括弧の使用についての穴がありますが、PropertyPathのヘルプでそれを追跡しました。しかし、私はまだ問題を解決することはできません。 DropShadowEffectにエフェクトをキャストする必要があると思いますが、これはXAMLでは可能ではないようです。 他のアイデアはありますか? – Zodman
私が提供した構文を使って、あなたが投稿したコードを手に入れました。私が使用したものを投稿し、それから戻ってくるかもしれません。 –
注:提供していないが、デモンストレーションには影響しない静的リソースを使用するセッターを削除しました。あなたのスタイル内でも動作しないTextBlock.Foregroundプロパティを設定しようとしていることがわかりました。 –