C# 从代码隐藏手动播放页面刷新动画

C# 从代码隐藏手动播放页面刷新动画,c#,xaml,animation,uwp,C#,Xaml,Animation,Uwp,我有一个NavigationView,它管理应用程序中几个不同框架布局的导航。通过这种方式,用户可以在不同的导航堆栈上切换到应用程序的另一部分,然后返回到原来的框架,并回到他们离开的地方 我已将每个帧设置为播放导航动画,如下所示: <Frame x:Name="UserFrame"> <Frame.ContentTransitions> <TransitionCollection> <NavigationT

我有一个
NavigationView
,它管理应用程序中几个不同
框架
布局的导航。通过这种方式,用户可以在不同的导航堆栈上切换到应用程序的另一部分,然后返回到原来的框架,并回到他们离开的地方

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

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

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

,导航时播放的动画是
页面刷新
动画。它说:

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


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

AFAIK不可能调用预构建转换,例如
NavigationThemeTransition
,并且在不是实际帧导航的情况下公开,但实际上是完全不同的,比如在帧的
可见性上的切换

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

如您所见,此静态方法公开了两个参数,
UIElement
,它获取要设置动画的元素,以及可以使用
Windows.UI.Composition
命名空间中定义的
合成器创建的动画

有用链接: