我想在可见性可以改变的控件上添加视觉效果(例如淡入,淡出)。
我不知道从哪里开始这样做。我已经阅读了一些关于VisualStateManager和VisualTransform的内容,但我仍然不知道它是否可行以及该怎么做。你能救我吗?
由于
答案 0 :(得分:6)
你想要的是什么。
您需要VisualStateManager
来定义ShowState
和HideState
。这些又定义了Storyboard
来控制可见性。
然后致电
VisualStateManager.GoToState(uiElement, "ShowState", true);
在你的元素上用动画发送到“ShowState”。用“HideState”替换状态名称将隐藏元素。
我们用于VisualStateManager
的XAML如下所示。它也会激活不透明度,因此会有淡入/淡出。
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="VisualStates">
<VisualState x:Name="ShowState">
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot"
Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:01"
Value="1" />
</DoubleAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot"
Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:00">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="HideState">
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot"
Storyboard.TargetProperty="(UIElement.Opacity)">
<EasingDoubleKeyFrame KeyTime="00:00:01"
Value="0" />
</DoubleAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="LayoutRoot"
Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="00:00:01">
<DiscreteObjectKeyFrame.Value>
<Visibility>Collapsed</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
注意这些上的KeyTime
值可能需要针对您的应用进行调整。再看一遍,我看到“HideState”时间都是0,这可能无法给你想要的效果。 AnthonyWJones可能在我们的申请中发现错误!