WPF页面幻灯片

时间:2018-12-20 16:31:59

标签: wpf desktop-application wpf-animation

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

我想要做的是动画化框架上页面的导航,方法是当我按下Next时,当前页面向左滑动,随后页面也向左滑动,并替换当前页面,当我按回去时,当前页面将向右滑动,而上一页将向右滑动以替换当前页面。

该怎么做?

2 个答案:

答案 0 :(得分:1)

我可能在这里被证明是错误的,但是我不相信 WPF 会提供一种轻松实现此目标的方法。在 UWP 中有一些方法可以覆盖现有的过渡动画。

对于 WPF ,您可以使用以下两种方法之一...

  • 开始滑动页面的动画。当动画是 完成后,它会触发一个事件,然后该事件将调用框架以进行更改 页面。

    默认情况下具有页面偏移并执行动画以使其滑动 进入它的原始位置。

或....

  • 捕获帧的Navigating事件,监视NavigationMode,调用动画,等待导航或标记e.Handled == true,然后用表示该事件的标志对其进行调用可以继续。

    执行相同的过渡。

这是问题所在;您将不会在同一时间在屏幕上同时显示两个页面,并且必须编写一些漂亮的过渡代码以使所有这些正常工作。我将尽力介绍具有接口或DependencyProperties的自定义控件,这些接口或DependencyProperties具有嵌入的转换功能等。

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

因此,如果您想要我的诚实回答,请不要使用Frame并手动完成所有操作 ...(这仅适用于WPF。UWP具有其他功能,并且还有更多原因比WPF使用内置导航。)

答案 1 :(得分:1)

好吧,我相信最简单的解决方案是使用Frames进行删除,并使用与TransitioningContentControl相似的东西来实现自己的导航机制(因此您不必实现从从头开始)。

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