VisualStateManager を使用してコントロールの状態を管理しようとしています。以下は問題なく動作し、状態間で 1 秒間のアニメーションが表示されます。
<VisualStateManager.VisualStateGroups>
<VisualStateGroup Name="EditStates">
<!-- Default transition time commented out
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0:0:2"></VisualTransition>
</VisualStateGroup.Transitions>-->
<VisualState Name="Normal">
<Storyboard>
<ThicknessAnimation Storyboard.TargetName="ViewBorder"
Storyboard.TargetProperty="Margin" To="0"/>
<DoubleAnimation Storyboard.TargetName="HeaderTransform"
Storyboard.TargetProperty="ScaleY" To="0" />
</Storyboard>
</VisualState>
<VisualState Name="Editing">
<Storyboard>
<ThicknessAnimation Storyboard.TargetName="ViewBorder"
Storyboard.TargetProperty="Margin" To="100,0,100,100"/>
<DoubleAnimation Storyboard.TargetName="HeaderTransform"
Storyboard.TargetProperty="ScaleY" To="1" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
ただし、遷移コードのコメントを外して 2 秒のアニメーション時間を設定しようとすると、見事に台無しになります。
「編集」設定時:
- は
DoubleAnimation
、アニメーションなしで即座に 1 にスナップします。 - は
ThicknessAnimation
2 秒間待機してから、1 秒間アニメートします
「ノーマル」設定時:
ThicknessAnimation
アニメーションなしで、即座に 0 にスナップします。- は
DoubleAnimation
2 秒間待機してから、1 秒間アニメートします。
誰が一体何が起こっているのか説明できますか?
Duration="0"
特定のサンプルのようにすべてのアニメーションを設定しようとしましたが、これは機能するアニメーションを削除するだけです。まだ 2 秒の遅延が発生し、アニメーションではなくスナップします。