【问题标题】:WPF Pages SlideWPF 页面幻灯片
【发布时间】:2019-05-21 04:59:25
【问题描述】:

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

我想要做的是动画框架上的页面导航,当我按下下一步时,当前页面向左滑动,下一个页面也向左滑动并替换当前页面,当我按下时,当前页面向右滑动,上一页向右滑动替换当前页面。

怎么做?

【问题讨论】:

  • 那个答案会为即将到来的页面设置动画,但我正在寻找能够为即将到来的页面和当前页面设置动画的解决方案
  • 我没有尝试过,但它看起来像 frame_Navigating 为当前页面设置动画,SlideCompleted 然后加载并为新页面设置动画。
  • 其实可以的,我试过了,但是目标页面出现动画的问题,我很累修改它,所以它一次动画两个页面但没有运气

标签: wpf desktop-application wpf-animation


【解决方案1】:

我在这里可能被证明是错误的,但我不相信 WPF 公开了一种轻松实现这一点的方法。 UWP 中有一些方法可以覆盖现有的过渡动画。

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

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

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

或者....

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

    在过渡时做同样的事情。

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

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

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

【讨论】:

  • 感谢您的回答,您有可以分享的样本吗?老实说,我不知道如何在没有框架的情况下加载页面
  • 我接受了答案,因为在将答案 here 修改为滑动后,我仍然得到一页幻灯片然后另一页幻灯片,所以我发现框架/页面方法不会在这里服务因为只有加载的页面可以动画,我不认为两个页面可以在一个框架或一个窗口中同时动画
【解决方案2】:

好吧,我相信最简单的解决方案是放弃使用 Frames 并使用类似于 TransitioningContentControl 的方式实现您自己的导航机制(因此您不必从头开始实现转换)。

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

【讨论】:

  • 嗨,如果我不使用框架,如何加载页面?请记住,我在开始时初始化了所有页面,并在整个应用程序期间保持它们处于活动状态,所以没有框架,如何显示每个页面?
猜你喜欢
  • 2017-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-12
  • 2020-04-08
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
相关资源
最近更新 更多