在 WPF 中使用触摸板水平滚动但没有 WM_MOUSEWHEEL 等

问题描述 投票:0回答:0

我正在尝试为我的 WPF 应用程序添加对触摸板水平滚动的支持。

我正在使用带有工作触摸板的 HP 笔记本电脑:在 Windows -> 设置 -> 触摸板下,它显示“您的 PC 具有精密触摸板”并提供广泛的选项。多手指手势有效,两指滑动水平滚动适用于我尝试过的几个应用程序;简而言之,触摸板完全能够发出多点触摸事件。

由于某些层将这些触摸事件转换为鼠标事件,垂直滚动和缩放已经可以工作,但是该层似乎没有对水平滚动做任何事情。

我在这里找到了这个解决方案:https://stackoverflow.com/a/47457389/773113(也在这里:https://blog.walterlv.com/post/handle-horizontal-scrolling-of-touchpad- en.html) 但它被

AddHook()
WM_MOUSEHWHEEL
弄脏了,所以我有以下问题:

  • 我很难相信,为了实现像接收触摸板输入这样简单而平常的事情,必须诉诸这样的噱头。

  • 这些噱头对我来说只有窗户才有强烈的气味,而在未来我会看到以下情况之一发生:

    • 要么 Microsoft 将发布跨平台版本的 WPF 以配合 NetCore,因此特定于 Windows 的噱头将不适用,要么
    • 我将从 WPF 切换到 Avalonia,在这种情况下,特定于 Windows 的噱头将再次不适用。

所以,如果可以避免,我宁愿不使用walterlv的解决方案。

在寻找替代方案时,我偶然发现了 WPF 中“操纵”的概念,我认为这可能会做到,但事实证明,由于某种原因,WPF 的整个操纵机制仅适用于触摸屏,不适用于触摸板,尽管我看不出两者之间有什么实际区别。

那么,有没有什么方法可以在我的 WPF 应用程序中使用触摸板支持水平滚动而无需诉诸

WM_MOUSEWHEEL

c# wpf touch touch-event touchpad
© www.soinside.com 2019 - 2024. All rights reserved.