【发布时间】:2010-01-10 03:39:20
【问题描述】:
在样式中,如何引用应用样式的元素?例如,在样式中我定义了一个RenderTransform,我想在 RenderTransform 上添加一个动画:
<Style x:Key="myStyle" TargetType="{x:Type FrameworkElement}">
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform />
</Setter.Value>
</Setter>
<Setter Property="RenderTransformOrigin"
Value="0.5, 0.5" />
<Style.Triggers>
<EventTrigger RoutedEvent="MouseDown">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.2"
From="1"
To="1.2"
AutoReverse="True"
Storyboard.Target="{Binding RenderTransform}"
Storyboard.TargetProperty="(ScaleTransform.ScaleX)" />
<DoubleAnimation Duration="0:0:0.2"
From="1"
To="1.2"
AutoReverse="True"
Storyboard.Target="{Binding RenderTransform}"
Storyboard.TargetProperty="(ScaleTransform.ScaleY)" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
当然,上面的代码不起作用,因为{Binding RenderTransform} 使用DataContext 作为源。我尝试用FindAncestor 模式指定RelativeSource,但找不到FrameworkElement 父级(可能是因为情节提要不是可视树的一部分)。
有没有办法绑定到应用样式的元素的属性?
【问题讨论】: