我正在尝试为 XAML 中的按钮编写 ControlTemplate。在 Triggers 集合中,我想使用 RotateTransform 旋转按钮的一个元素,稍后将获得动画效果(为简单起见,关闭动画)。为此,我需要参考附加到按钮元素的旋转变换的角度属性。这就是问题所在:我似乎找不到引用它的方法。这是代码:
<ControlTemplate x:Key="myButtonTemplate"
TargetType="Button">
<Grid>
<Ellipse x:Name="OuterCircle"
RenderTransformOrigin="0.5, 0.5">
<Ellipse.Fill>
<RadialGradientBrush Center="0.7,0.7">
<GradientStop Offset="0.9" Color="DarkBlue"/>
<GradientStop Offset="0.2" Color="White"/>
</RadialGradientBrush>
</Ellipse.Fill>
<Ellipse.RenderTransform>
<RotateTransform x:Name="myTransform" Angle="0"/>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse x:Name="InnerCircle"
RenderTransformOrigin="0.5, 0.5"
Stroke="DarkBlue"
>
<Ellipse.Fill>
<RadialGradientBrush Center="0.35,0.35"
RadiusX="0.7"
RadiusY="0.7">
<GradientStop Offset="0.05" Color="#70B0FF"/>
<GradientStop Offset="0.9" Color="DarkBlue"/>
</RadialGradientBrush>
</Ellipse.Fill>
<Ellipse.RenderTransform>
<ScaleTransform ScaleX="0.8" ScaleY="0.8"/>
</Ellipse.RenderTransform>
</Ellipse>
<Viewbox Margin="10">
<ContentPresenter Margin="{TemplateBinding Padding}"/>
</Viewbox>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="myTransform" Property="Angle" Value="90"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
我试图通过 x:Name="myTransform" 为 RotateTransform 命名,并将其用作 Setter 中的 TargetName。这没有用。尝试过的其他事情是“打点”,例如TargetName="OuterCircle.RenderTransofrm.RotateTransform"
. 也没有欢乐。
看起来这应该很容易,而且可能很容易。有人可以指出我正确的方向吗?
谢谢, - 克里斯。