5
다음 스타일을 사용하여 테두리가있는 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 만 페이드 인합니까? 당신은 효과 속성의 값 (DropShadowEffect)이 아닌 재산 자체를 목표로 노력하고 적용됩니다 -
불투명도 속성이 있습니다. Effect의 값은 대상으로하는 불투명도 속성이있는 DropShadowEffect이지만 내 XAML이 잘못되었음을 지적합니다. DropShadowEffect에서 x : Name을 설정했지만 스타일에서 TargetName을 사용할 수 없습니다. Storyboards에서이 괄호를 사용하는 것에 대한 MSDN 문서의 구멍이 있지만 PropertyPath에 대한 도움말에서이를 추적했습니다. 그러나 나는 아직도 문제를 해결할 수 없다. DropShadowEffect에 효과를 캐스팅해야한다고 생각하지만 XAML에서는 가능하지 않습니다. 다른 아이디어가 있습니까? – Zodman
필자가 제공 한 구문을 사용하여 게시 한 코드를 얻을 수있었습니다. 필자는이 코드를 제거한 샘플 응용 프로그램에서 사용했습니다. 내가 사용했던 것을 올리면 그걸로 다시 돌아올 수 있습니다. –
참고 제공하지 않았지만 데모에 영향을주지 않는 정적 리소스를 사용하는 설정자는 제거했습니다. 그리고 TextBlock.Foreground 속성을 스타일 내에서 설정하려고합니다. –