更改视觉状态,并根据依赖属性不使用过渡
||
我有一个控制权,有时我想给状态转换设置动画,有时却不做。
目前,我有这样的事情:
<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依赖项属性,该属性控制状态转换是否动画。
我已经尝试了一些操作,例如在UseTransitions属性更改的处理程序上将GeneratedDuration设置为0,但是似乎在状态更改后才被设置,因此无效。
我还尝试了使用DataTrigger进行GoToStateAction,但是它们似乎仅在更改时被触发,并且DataContext的初始值未正确设置状态。
我已经考虑过在DataStateBehaviour上使用ValueConverter来评估UseTransition属性并触发不同的状态,但这似乎是一个非常丑陋的解决方案。
任何人都有一个优雅的解决方案?
没有找到相关结果
已邀请:
0 个回复