У меня есть один элемент управления, который я иногда хочу анимировать переходом состояния, а иногда нет.
На данный момент у меня есть что-то вроде этого:
<Grid>
<Interactivity:Interaction.Behaviors>
<ic:DataStateBehavior Binding="{Binding Direction}" Value="Up" TrueState="Up_Direction" />
</Interactivity:Interaction.Behaviors>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="AnimatedStates">
<VisualStateGroup.Transitions>
<VisualTransition x:Name="transition" GeneratedDuration="0:0:1">
<VisualTransition.GeneratedEasingFunction>
<ElasticEase .../>
</VisualTransition.GeneratedEasingFunction>
</VisualTransition>
</VisualStateGroup.Transitions>
<VisualState x:Name="Up_Direction" >
<Storyboard>
<DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)"
Storyboard.TargetName="pathArrow" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Path x:Name="pathArrow" ...>
<Path.RenderTransform>
<RotateTransform Angle="90" />
</Path.RenderTransform>
</Path>
</Grid>
Это работаетотлично, но я хочу иметь свойство зависимостей UseTransitions, которое контролирует, анимированы ли переходы этого состояния.
Я пробовал несколько вещей, таких как установка для GeneratedDuration значения 0 в обработчике изменения свойства UseTransitions, ноПохоже, что он устанавливается после того, как состояние уже изменилось, поэтому ничего не даетустановить правильное состояние.
Я думал о том, чтобы иметь ValueConverter в DataStateBehaviour, который оценивает свойство UseTransition и запускает различные состояния, но это кажется действительно уродливым решением.элегантное решение?