0
在我的WPF應用程序中,我正在爲ComboBox編寫一個自定義模板。我想組合框獲得提升的陰影效果,當用戶將鼠標放在它,所以我嘗試寫這樣的代碼:如何使用觸發器來定位效果?
<ControlTemplate TargetType="{x:Type ComboBox}">
<Border x:Name="templateRoot"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="4" SnapsToDevicePixels="True">
<Grid SnapsToDevicePixels="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="0" MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" />
</Grid.ColumnDefinitions>
<Border x:Name="Shadow"
Grid.Column="0" Grid.ColumnSpan="2"
Margin="-3"
Background="{DynamicResource L1Brush}">
<Border.Effect>
<DropShadowEffect x:Name="ShadowEffect"
BlurRadius="0" ShadowDepth="0" />
</Border.Effect>
</Border>
<!-- rest of the template -->
</Grid>
</Border>
<ControlTemplate.Triggers>
<!-- other triggers -->
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="ShadowEffect" Property="DropShadowEffect.BlurRadius" Value="5" />
</Trigger>
<Trigger Property="IsFocused" Value="True">
<Setter TargetName="ShadowEffect" Property="DropShadowEffect.BlurRadius" Value="5" />
</Trigger>
<!-- other triggers -->
</ControlTemplate.Triggers>
</ControlTemplate>
然而,在運行時,它拋出一個錯誤,理由是該名稱ShadowEffect
不存在。我如何完成這項工作?如果我想動畫的話,我會如何從Storyboard中引用ShadowEffect
?
我意識到我可以設置邊框的整個Effect
屬性,但是如果我嘗試添加動畫,這種方法會分崩離析。
這是一個聰明的解決方案,謝謝!但一兩件事 - ' <故事板Storyboard.TargetName = 「ShadowEffect」> BeginStoryboard> 似乎可以做到,但動畫非常不穩定。爲什麼? –
333
@ 333你需要在DoubleAnimation IIRC上設置From和To。這是我希望的解決方案,但沒有時間查找。現在我在我前往的酒吧。 –