我正在开发一个 WPF 应用程序,用于带触摸屏的销售点。我在 ScrollViewer 中有一个带有产品按钮的 ItemsControl。用户可以通过用手指拖动来滚动(平移)产品。要将产品添加到购物车,用户只需触摸产品按钮即可。到目前为止一切顺利。
然而,由于触摸屏表面非常光滑和抛光,用户在尝试按下按钮时手指有时会稍微滑动。在这种情况下,按钮点击未注册。相反,ScrollViewer 会滚动微小的移动。
现在,我的问题是:有没有一种方法可以降低 ScrollViewer 的灵敏度,以便需要更长的拖动时间来启动滚动并抑制点击事件。
感谢您的任何建议!
最好的问候,
克里斯
最佳答案
我有同样的敏感性问题,并通过这种方式解决了:
创建了自己的ScrollViewer,继承自原生的ScrollViewer:
- 重写 OnManipulationDelta 方法
- 检查手指移动是否足够(e.CumulativeManipulation.Translation.Y)
- 如果不是,请不要调用 base.OnManipulationDelta(e)。否则,调用 base.OnManipulationDelta(e)
似乎原生控件平移阈值只有 3 个像素,这就是为什么触摸点击很容易被注册为平移。通过这个技巧,您可以定义自己的阈值。我使用了 35 像素(准确地说,是 WPF 中的设备独立像素)
关于WPF ScrollViewer 滚动灵敏度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27174227/