Мне нужно определить простую анимацию в XAML (без кода позади), которая должна вращать фоновое изображение кнопки, изменяя логическое свойство bounded. У меня есть кнопка в XAML:
<Button Style="{StaticResource btnStyle}" />
В разделе Resources окна, которое я создаю, следующее:
<RotateTransform Angle="180" x:Key="rotAt180" />
<Style TargetType="Button" x:Key="btnStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Image Source="Images\pic.png" />
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding MyBoolProp}" Value="False">
<Setter Property="RenderTransform" Value="{StaticResource rotAt180}" />
<!-- This animation works good -->
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation From="0" To="180" Duration="0:0:0.2" Storyboard.TargetProperty="RenderTransform.Angle" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<!-- This animation causes exception -->
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation From="180" To="0" Duration="0:0:0.2" Storyboard.TargetProperty="RenderTransform.Angle" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
MyBoolProp инициализируется значением True.
Первая анимация работает отлично. Но вторая анимация вызывает System.InvalidOperationException в PresentationFramework.dll ( "Невозможно разрешить все ссылки на свойства в пути свойства" RenderTransform.Angle ". Проверьте, что соответствующие объекты поддерживают такие свойства" ).
Я попытался переместить вторую анимацию в триггер, где MyBoolProp Истина:
<DataTrigger Binding="{Binding MyBoolProp}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation From="180" To="0" Duration="0:0:0.2" Storyboard.TargetProperty="RenderTransform.Angle" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
Но результат тот же. Что не так в такой реализации?