私の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
がないことを理由に存在する。この仕事をするにはどうすればいいですか?そして私がこれをアニメートしたい場合、ストーリーボードからShadowEffect
をどのように参照するのですか?
私はちょうどボーダーのプロパティ全体を設定することができますが、私はアニメーションを追加しようとすると、このアプローチは分かりません。
これは賢い解決策です。ありがとうございます!しかし、もう一つ - ' <ストーリーボードStoryboard.TargetName = "ShadowEffect"> BeginStoryboard> Trigger.EnterActions>はトリックを行うようですが、アニメーションは非常に不安定です。どうして? –
333
@ 333 DoubleAnimation IIRCのFromとToを設定する必要があります。それは私が好むだろうが見上げる時間がなかった解決策です。今私は出かけていたバーにいます。 –