WPF ScrollViewer 滚动灵敏度

标签 wpf button scroll scrollviewer

我正在开发一个 WPF 应用程序,用于带触摸屏的销售点。我在 ScrollViewer 中有一个带有产品按钮的 ItemsControl。用户可以通过用手指拖动来滚动(平移)产品。要将产品添加到购物车,用户只需触摸产品按钮即可。到目前为止一切顺利。

然而,由于触摸屏表面非常光滑和抛光,用户在尝试按下按钮时手指有时会稍微滑动。在这种情况下,按钮点击未注册。相反,ScrollViewer 会滚动微小的移动。

现在,我的问题是:有没有一种方法可以降低 ScrollViewer 的灵敏度,以便需要更长的拖动时间来启动滚动并抑制点击事件。

感谢您的任何建议!

最好的问候,

克里斯

最佳答案

我有同样的敏感性问题,并通过这种方式解决了:

创建了自己的ScrollViewer,继承自原生的ScrollViewer:

  1. 重写 OnManipulationDelta 方法
  2. 检查手指移动是否足够(e.CumulativeManipulation.Translation.Y)
  3. 如果不是,请不要调用 base.OnManipulationDelta(e)。否则,调用 base.OnManipulationDelta(e)

似乎原生控件平移阈值只有 3 个像素,这就是为什么触摸点击很容易被注册为平移。通过这个技巧,您可以定义自己的阈值。我使用了 35 像素(准确地说,是 WPF 中的设备独立像素)

关于WPF ScrollViewer 滚动灵敏度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27174227/

相关文章:

c# - 带有空字符串的 XAML 静态字符串数组

java - 自动单击 JavaFX Webview 中的按钮

javascript - 如果超时,Jquery 禁用切换 div

Android Studio - 将不同尺寸的按钮与底部对齐

android - 如何为按钮选择器设置不同的主题?

jquery - div 与 jquery animate 滚动不平滑

javascript - 如何在向下滚动到达另一个元素时隐藏一个元素?

wpf - 动态使背景颜色变浅

c# - 在 Visual Studio 外部运行时从 WPF 窗口中删除图标

wpf - F# WPF MVVM 我可以在不使 View 模型变量可变的情况下执行此操作吗?