WPF Thumb 滑块控件踩坑

最近在做一个仿 手机选择时间的控件,如下图,选用了 Thumb 滑块控件做上下滑动的功能。订阅了 Thumb_OnDragStarted、Thumb_DragDelta和Thumb_DragCompleted的事件,做一些业务逻辑

 

发现问题:

在我们普通pc电脑上,滑块的Thumb_DragDelta 和 Thumb_DragCompleted 的 e.VerticalChange,在结束事件的时候是一致的。

 但是放到大屏上就是不正常的,计算了一下刚好是5倍的关系

 

排查了一番,发现大屏上的对应的dpi是调成了500%的,于是我把个人的pc电脑的dpi调整了175%,在进一步调试。

 

发现问题所在:Thumb_DragDelta 的 e.VerticalChange 是获取的wpf的像素,而Thumb_DragCompleted 的 e.VerticalChange 则是获取屏幕上的,也即是乘上了dpi的

 查阅了源码,也说明了DragDelta回调的参数是wpf像素

 不知道该问题是不是wpf的bug,但是为了解决我目前的问题,我在Thumb_DragCompleted 做数据处理,把dpi除掉,数据正常了。

 

posted @ 2023-05-04 20:19  wuty007  阅读(147)  评论(0编辑  收藏  举报