Silverlight:在可见和不可见状态之间添加视觉转换
我想在控件上添加视觉效果(例如淡入、淡出),可见性可以更改 我不知道从哪里开始做。我读过一些关于VisualStateManager和VisualTransform的文章,但我仍然不知道这是否可行,以及该怎么做。你能帮我吗Silverlight:在可见和不可见状态之间添加视觉转换,silverlight,visibility,transition,Silverlight,Visibility,Transition,我想在控件上添加视觉效果(例如淡入、淡出),可见性可以更改 我不知道从哪里开始做。我读过一些关于VisualStateManager和VisualTransform的文章,但我仍然不知道这是否可行,以及该怎么做。你能帮我吗 谢谢你想要的是可能的 您需要一个VisualStateManager,它定义了一个ShowState和一个HideState。它们依次定义了控制可见性的情节提要 然后你打电话 VisualStateManager.GoToState(uiElement, "ShowState
谢谢你想要的是可能的 您需要一个
VisualStateManager
,它定义了一个ShowState
和一个HideState
。它们依次定义了控制可见性的情节提要
然后你打电话
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很可能在我们的应用程序中发现了一个错误 +1但你确定DiscreteObjectKeyFrames上的KeyTime是正确的吗?@Anthony-也许现在你不想提了。代码似乎在我们的应用程序中工作,但我没有仔细检查它是否按预期工作。它不会按预期褪色。您可能会丢失BeginTime和Duration属性,并将所有KeyTime属性设置为1秒。然后你会得到预期的行为。@Steph D.-我知道,@AnthonyWJones指出。我做了一个改变,但我仍然不认为它是完美的。然而,它应该给你一些可以使用的东西。一旦代码正常运行,我将更新答案。好的(很抱歉,由于长度的原因,我将注释放在了线程的根上:-))