Я пытаюсь написать ControlTemplate для кнопки в XAML. В коллекции триггеров я хочу повернуть один элемент кнопки с помощью RotateTransform, который позже будет анимироваться (для простоты оставлена анимация). Для этого мне нужно сослаться на свойство Angle преобразования поворотов, прикрепленное к элементу кнопки. И в этом проблема: я не могу найти способ ссылаться на нее. Вот код:Невозможно найти способ анимации RotateTransform в ControlTemplate
<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>
Я попытался дать RotateTransform имя по х: Name = «myTransform» и ссылаться на него, используя его в качестве Имя_целевого_объекта в сеттер. Это не сработало. Другие вещи, которые попробовали, были «усеяны», как TargetName="OuterCircle.RenderTransofrm.RotateTransform"
. Никакой радости.
Кажется, что это должно быть легко и возможно. Может ли кто-нибудь указать мне в правильном направлении?
Спасибо, - Крис.
Спасибо, Клеменс, ваше решение работает! Просто чтобы улучшить свой личный опыт: как это будет работать с триггером свойства, где вы не можете использовать 'Storyboard.TargetName'? Другими словами: есть ли способ заставить оригинальный пример работать? Очарование этого было бы в том, что вам нужен только один триггер на 'IsMouseOver = True' вместо двух EventTriggers. –