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

我不知道从哪里开始做。我已经阅读了一些有关VisualStateManager和VisualTransform的信息,但我仍然不知道是否可行以及该怎么做。你能帮助我吗 ?

谢谢

最佳答案

您想要的是可能的。

您需要一个VisualStateManager,它定义了ShowStateHideState。这些依次定义了控制可见性的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可能在我们的应用程序中发现错误!

10-04 15:44