我有一个使用WPF制作的应用程序,我有多个页面和一个包含框架的表单,并且将页面加载到框架上,并且每个页面都有后退和下一个按钮。
我想要做的是动画化框架上页面的导航,方法是当我按下Next时,当前页面向左滑动,随后页面也向左滑动,并替换当前页面,当我按回去时,当前页面将向右滑动,而上一页将向右滑动以替换当前页面。
该怎么做?
答案 0 :(得分:1)
我可能在这里被证明是错误的,但是我不相信 WPF 会提供一种轻松实现此目标的方法。在 UWP 中有一些方法可以覆盖现有的过渡动画。
对于 WPF ,您可以使用以下两种方法之一...
开始滑动页面的动画。当动画是 完成后,它会触发一个事件,然后该事件将调用框架以进行更改 页面。
默认情况下具有页面偏移并执行动画以使其滑动 进入它的原始位置。
或....
捕获帧的Navigating
事件,监视NavigationMode
,调用动画,等待导航或标记e.Handled == true
,然后用表示该事件的标志对其进行调用可以继续。
执行相同的过渡。
这是问题所在;您将不会在同一时间在屏幕上同时显示两个页面,并且必须编写一些漂亮的过渡代码以使所有这些正常工作。我将尽力介绍具有接口或DependencyProperties的自定义控件,这些接口或DependencyProperties具有嵌入的转换功能等。
说;过去我曾遇到过这个问题,为了公平起见,我只是放弃了Frame
控件和页面,而是全部手动完成了。最后,它感觉更快,更易于维护,并且我能够实现想要的任何效果。
因此,如果您想要我的诚实回答,请不要使用Frame
并手动完成所有操作 ...(这仅适用于WPF。UWP具有其他功能,并且还有更多原因比WPF使用内置导航。)
答案 1 :(得分:1)
好吧,我相信最简单的解决方案是使用Frames
进行删除,并使用与TransitioningContentControl相似的东西来实现自己的导航机制(因此您不必实现从从头开始)。
基本上,您将拥有一个控件列表,一个TransitionContentControl
和两个按钮(后退和前进)。因此,您要做的就是处理按钮的单击并相应地设置Transition
(例如,按下后退按钮时,将其设置为Left
并加载上一页)。