现象:
WPF程序绑定的command在触摸屏上,点击button后,button绑定的事件偶尔会出现不响应的情况。确认100%点击有效,不会出现误触的情况。
但是用鼠标点击,绝对不会出现这种现象。
原因:
在非触屏环境,bingding command是由点击来触发,即是使用鼠标等输入设备来执行点击触发command,调用的是系统外设API来进行处理。
但在触屏环境下,绑定的command则是由手指或触摸笔等触摸屏幕后,再由内部的实时触控API或多点触控API进行处理……而这两个API在同一个HWND(HWND 的全称是 Handle to Window,表示窗口句柄。)上互斥。
详细资料见MSDN:Disable the RealTimeStylus - WPF .NET Framework | Microsoft Learn
尝试方法:
禁用RealTimeStylus后,在测试中又会出现另外的问题——即在触屏上用滚动就不行了,这就引入了新的问题。若项目中不需要滚动,此还是能解决存在问题的;但若需要滚动,并应用于触控环境,这就是个问题了。
当然有治标的方法是将所有的button绑定command全部转为touch事件来触发;只是如此在非触控环境,如此就不能正常使用了。
寻找更好方法中……
标签:button,绑定,API,command,WPF,触屏 From: https://www.cnblogs.com/chengcanghai/p/17478437.html