WPF 页面幻灯片

WPF Pages Slide

我有一个使用 WPF 制作的应用程序,我有多个页面和一个包含框架的表单,我将页面加载到一个框架上,每个页面都有后退和下一个按钮。

我想做的是在我按下下一步时以某种方式动画化框架上的页面导航,当前页面向左滑动,下一页也向左滑动并替换当前页面页面,当我按返回键时,当前页面向右滑动,上一页向右滑动,替换当前页面。

怎么做?

我在这里可能被证明是错误的,但我不相信 WPF 公开了一种轻松实现这一点的方法。 UWP.

中有覆盖现有过渡动画的方法

对于 WPF,您可以通过以下两种方式之一处理此问题...

  • 开始页面滑出动画。当动画是 完成让它触发一个事件,然后调用框架进行更改 页数。

    页面默认偏移并执行动画滑动 回到原来的位置。

或....

  • 捕获帧的Navigating事件,监听NavigationMode,调用动画,让导航等待或标记e.Handled == true,之后调用表示可以继续的标志。

    为过渡做同样的事情。

问题来了;您不会同时在屏幕上显示两个页面,您必须编写一些花哨的转换代码才能使所有这些正常工作。我会尽可能引入带有接口的自定义控件或嵌入了转换功能的 DependencyProperties 等。

也就是说;我过去遇到过这个问题,公平地说,我只是放弃了 Frame 控件和页面,并全部手动完成。最后感觉更快,更容易维护,而且我能够达到我想要的任何效果。

所以如果你想要我诚实的回答就不要使用Frame并手动完成...(这仅适用于 WPF。UWP 有与 WPF 相比,使用内置导航的其他功能和更多理由。)

好吧,我认为最简单的解决方案是放弃使用 Frames 并使用类似于 TransitioningContentControl 的内容实现您自己的导航机制(这样您就不必实现从头开始过渡)。

基本上,您会有一个控件列表、一个 TransitionContentControl 和两个按钮(后退和前进)。所以你所要做的就是处理按钮上的点击并相应地设置 Transition (例如,当按下后退按钮时将其设置为 Left 并加载上一页)。