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>
問題是,沒有任何反應!如果我在故事板TargetProperty中將「DropShadowEffect」更改爲「UIElement」,則該動畫將起作用,但這會淡化整個控件。
我該如何淡化DropShadowEffect?
我得到一個InvalidOperationException,因爲沒有按效果」沒有不透明屬性。效果的值是DropShadowEffect,它具有我試圖定位的Opacity屬性,但正如你指出我的XAML是錯誤的。 我已經嘗試在DropShadowEffect上設置x:Name,但不能在樣式中使用TargetName。 在MSDN文檔中有關於在故事板中使用這些括號的問題,但我在PropertyPath的幫助中對其進行了跟蹤。但是我仍然無法解決問題。我認爲我需要將效果施放到DropShadowEffect,但這在XAML中似乎不可行。 有沒有其他想法? – Zodman 2009-09-16 01:37:38
我設法使用我提供的語法獲得了您發佈的代碼,我在一個剝離的示例應用程序中完成了此操作。我會發布我用過的東西,你也許可以從中恢復... – 2009-09-16 02:02:41
注意我已經移除了那些使用靜態資源的setters,但是這些靜態資源並不會影響演示。我注意到你正在嘗試在你的風格中設置TextBlock.Foreground屬性,這也是行不通的。 – 2009-09-16 02:09:19