Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Silverlight:在可见和不可见状态之间添加视觉转换_Silverlight_Visibility_Transition - Fatal编程技术网

Silverlight:在可见和不可见状态之间添加视觉转换

Silverlight:在可见和不可见状态之间添加视觉转换,silverlight,visibility,transition,Silverlight,Visibility,Transition,我想在控件上添加视觉效果(例如淡入、淡出),可见性可以更改 我不知道从哪里开始做。我读过一些关于VisualStateManager和VisualTransform的文章,但我仍然不知道这是否可行,以及该怎么做。你能帮我吗 谢谢你想要的是可能的 您需要一个VisualStateManager,它定义了一个ShowState和一个HideState。它们依次定义了控制可见性的情节提要 然后你打电话 VisualStateManager.GoToState(uiElement, "ShowState

我想在控件上添加视觉效果(例如淡入、淡出),可见性可以更改

我不知道从哪里开始做。我读过一些关于VisualStateManager和VisualTransform的文章,但我仍然不知道这是否可行,以及该怎么做。你能帮我吗


谢谢

你想要的是可能的

您需要一个
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指出。我做了一个改变,但我仍然不认为它是完美的。然而,它应该给你一些可以使用的东西。一旦代码正常运行,我将更新答案。好的(很抱歉,由于长度的原因,我将注释放在了线程的根上:-))