Когда ObjectAnimationUsingKeyFrames
пытается анимировать значение, полученное из DependencyObject
, он пытается заморозить объект первым.Если объект не может быть заморожен, он генерирует исключение, и анимация не запускается.
Если вы анимируете значение пользовательского типа, которое вы написали, похоже, вам нужно либо получить из Freezable
или НЕ происходят от DependencyObject
.
Для уже существующих свойств, которые получены из DependencyObject
, а не Freezable
, вы не можете анимировать их (StyleProperty
или TemplateProperty
являются примерами).Попробуйте использовать установщик свойств внутри стиля:
<Style.Triggers>
<Trigger Property="IsEnabled" Value="True">
<Setter Property="Template" Value="{StaticResource TestTemplate}"/>
</Trigger>
</Style.Triggers>
Встроить всю логику перехода в стиль вместо переключения между различными стилями.С этой проблемой вы можете столкнуться с тем, что целевое свойство должно быть свойством зависимости, поэтому вы не можете использовать IsLoaded
.
Надеюсь, вы найдете это полезным.
Один последнийподумал: можно определить пользовательских анимаций , хотя я сам этого не делал.Есть шанс, что вы можете написать свою собственную «ObjectAnimation», которая не будет ограничена Freezable
или не DependencyObject
классами.