You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF触摸屏应用触摸功能异常,启用配置后DataGrid触摸滚动失效

问题分析与解决方案

问题根源

你的触摸冻结问题源于WPF触摸操作的事件触发机制:当用户触摸控件时,系统会先触发TouchDown事件,随后自动模拟Click事件。你的代码中,TouchDown和Click都会执行ChoosePack(),导致该方法被连续调用两次,进而阻塞UI线程,引发应用冻结。

添加Switch.System.Windows.Input.Stylus.DisableStylusAndTouchSupport=true配置后,系统停止将触摸事件转换为Stylus/Click事件,避免了重复执行ChoosePack(),所以触摸恢复正常,但同时也禁用了DataGrid依赖的Stylus触摸滚动功能。

修复方案

无需禁用Stylus支持,只需调整事件处理逻辑,阻止触摸操作触发后续的Click事件,避免ChoosePack()重复执行:

private void choose_pack_TouchDown(object sender, TouchEventArgs e)
{
    ChoosePack();
    e.Handled = true; // 标记事件已处理,阻止系统生成Click事件
}

private void choose_pack_Click(object sender, RoutedEventArgs e)
{
    ChoosePack();
}

说明

  • 设置e.Handled = true后,触摸操作只会触发TouchDown事件,不会再触发Click,确保ChoosePack()只执行一次,解决冻结问题。
  • 保留Stylus支持,DataGrid的触摸滚动功能也能正常工作。
  • 鼠标点击仍会正常触发Click事件,不影响原有功能。

内容的提问来源于stack exchange,提问作者user2866205

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 21:03:11