Aşağıdaki stili kullanarak bir kenarlığı olan bir WPF projem var. Plan, farenin kenarlık üzerinde hareket ettiği zaman, parlama efektinin solması ve ayrıldığında sönmesidir.Bir DropShadowEffect'in Opaklığı nasıl canlandırılır?
<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>
Sorun şu ki, hiçbir şey olmuyor! Animasyon, Storyboard TargetProperty'de "DropShadowEffect" i "UIElement" olarak değiştirirsem de çalışır, ancak bu tüm kontrolü eler.
Sadece DropShadowEffect'te nasıl kaybolurum? Sen Etkisi özelliğinin değerini (DropShadowEffect) değil, mülkiyet kendisi hedef için çalışıyoruz yürürlükte olan -
Bir Opaklık özelliği var. Efektin değeri, hedeflemeye çalıştığım Opaklık özelliğine sahip olan DropShadowEffect'tir, ancak XAML'imin yanlış olduğunu belirttiğinizde. DropShadowEffect'te x: Name ayarlamayı denedim, ancak TargetName'i Stiller'de kullanamazsınız. MSDN belgelerinde bu parantezlerin storyboard'larda kullanımıyla ilgili bir delik var, ancak PropertyPath'in yardımında onu izledim. Ancak hala sorunu çözemiyorum. Sanırım DropShadowEffect'e efekt vermem gerekiyor ama XAML'de bu mümkün görünmüyor. Başka herhangi bir fikir var mı? – Zodman
Gönderdiğim sözdizimini kullanarak yayınladığınız kodu almayı başardım, bunu arka arkaya bir örnek uygulamada yaptım. Kullandığım şeyi yayınlayacağım ve belki de bundan geri dönebilirsiniz ... –
Not Sağlanmadığınız ancak gösterimi etkilemeyecek statik kaynakları kullanan ayarlayıcıları kaldırdım. Ve ayrıca, çalışmalarınızda olmayacak şekilde, TextBlock.Foreground özelliğini ayarlamaya çalıştığınızı görüyorum. –