wpf 模仿安卓手机的时间滚动控件(触屏)

前言

前几天,由于wpf项目需要用到类似安卓手机的时间选择控件,网上搜索了好久,没有找到类似的,于是乎自己写了一个,可供参考。

思路

思路一

一开始参考了网上一位博主的做法,一开始设定好三个标签,然后手指滑动的时候改变这三个标签的位置,从而实现滑动的效果,从结果上,这个效果还是蛮不错的,但是由于改变的时候是三个标签一起变,因此会产生一瞬间的回弹感,不太适合,且其动画效果有些难以处理,因此作罢。

思路二

在找资料的时候,看见了WPF 循环显示列表这篇文章,其本意是构建一个窗口,每次滚动就刷新窗口中的值,基于这个思路以及之前尝试的ScrollViewer控件,我有了一个较为明确且可行的思路。
即在窗口初始化的时候生成所有的时间,然后使其处于中间位置,例如24个数字,初始数字为0,则上面生成12~23,下面生成0 ~11,这样做的目的是使0在中间的时候,可以向上滑动和向下滑动。如何实现滑动,则需要用到ScrollViewer控件。在这里插入图片描述
如上图所示,红色代表我们的窗口,黑色代表ScrollViewer,而蓝色则是我们一开始就生成好的数字列表,我们把生成好的数字列表放在ScrollViewer中,并使其滑动到中间位置,这个时候就可以实现上下滑动并且看起来时间是循环的。
这里还需要解决一个问题,当向上或者向下滑动到最始或最末端的时候,就无法滑动了,这不符合我们的循环的理念,因此,解决方案是在滑动触摸结束的时候,重新刷新列表中的数据,并且继续滑动到中间位置,这样,我们就实现了无限循环(如果不一下子滑倒底的话,为了防止这种情况,可以将列表扩大一倍)。

实现效果如下图所示:
在这里插入图片描述
代码以后再贴上来。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值