Silverlight:在可见和不可见状态之间添加可视过渡

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

我不知道从哪里开始这样做.我已经阅读了一些关于visualstatemanager和VisualTransform的内容,但我仍然不知道它是否可行以及该怎么做.你能帮助我吗 ?

谢谢

解决方法

你想要什么是可能的.

您需要一个定义ShowState和HideState的visualstatemanager.这些又定义了一个控制可见性的故事板.

然后你打电话

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可能在我们的应用程序中发现错误

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...