从后面的代码手动播放页面刷新动画

时间:2018-02-21 15:59:32

标签: c# xaml animation uwp

我有一个NavigationView,用于管理应用程序中多个不同Frame布局的导航。这样,用户可以在不同的导航堆栈上翻转到应用程序的另一部分,然后返回到其原始帧并且正好在他们停止的位置。

我已设置每个帧以播放导航动画,如下所示:

<Frame x:Name="UserFrame">
    <Frame.ContentTransitions>
        <TransitionCollection>
            <NavigationThemeTransition/>
        </TransitionCollection>
    </Frame.ContentTransitions>
</Frame>

无论何时在帧的导航堆栈中添加或删除某些内容,都会创建一个漂亮的动画。但是,当我在活动帧之间切换时(仅通过将活动帧的可见性设置为visible并将非活动帧的可见性设置为collapsed),我得不到相同的动画效果,因为实际上没有导航发生在帧导航堆栈上。

According to the documentation on NavigationThemTransition,我导航时播放的动画是Page Refresh动画。它声明:

  

页面刷新是页面导航的默认动画。它是传入内容的上滑动画和淡入淡出动画的组合。使用顶级导航(如导航菜单)时,应使用页面刷新。

有没有办法从我的代码后面调用这个预先构建的动画?如果没有,那么创建动画的最佳方法是什么,并使我可以访问用于导航的每个Frame布局?

1 个答案:

答案 0 :(得分:1)

AFAIK它无法调用预构建转换,例如NavigationThemeTransition并暴露出不是真正的帧导航的情况,但实际上完全是与框架Visibility上的切换不同。

对于这种情况,您应该使用静态方法SetImplicitShowAnimation(UIElement, ICompositionAnimationBase)  ElementCompositionPreview等级。

正如您所看到的,这个静态方法公开了两个参数,UIElement,它接受​​您想要设置动画的元素,以及您可以使用Compositor中定义的Windows.UI.Composition创建的动画。 {1}}命名空间。

有用的链接:ElementCompositionPreview Classgroupby.agg