title author date CreateTime categories
WPF 非客户区的触摸和鼠标点击响应
lindexi
2019-08-08 16:48:31 +0800
2019-07-02 17:15:20 +0800
WPF

默认在 WPF 里面是不响应非客户区的鼠标事件,但响应触摸事件

在没有喝下午茶的时候 lsj 告诉我,在项目里面在一个定制的窗口里面的非客户区用鼠标点击不了一个按钮,但是用触摸可以点击按钮。本金鱼一开始认为这是之前修复的问题,但是作为金鱼已经不记得是怎么修了,为了让本金鱼下次遇到触摸或鼠标问题的时候可以解决,于是写了这个博客

本文将会告诉大家在 WPF 里面关于非客户区的触摸和鼠标点击响应

在本文开始之前,需要大家知道非客户区 Non-client Area 的概念,其实就是窗口标题栏大概的意思,详细请看 一起学WPF系列(3):窗体 - Robin Zhang - 博客园WPF 使用 WindowChrome,在自定义窗口标题栏的同时最大程度保留原生窗口样式(类似 UWP/Chrome) - walterlv

敲黑板,下面的知识点要考

默认的 WPF 程序支持在非客户区响应 Touch 触摸,但不响应鼠标点击和 Pointer 触摸

如果需要在非客户区也就是窗口标题栏支持鼠标点击,那么请在按钮添加附加属性 WindowChrome.IsHitTestVisibleInChrome 为 true 支持鼠标点击

<Button WindowChrome.IsHitTestVisibleInChrome="True"/>

这里的 WindowChrome.IsHitTestVisibleInChrome 支持继承,也就是可以在窗口设置,这样所有在窗口里面的按钮都支持在标题栏点击

如何开启 Pointer 消息请看 win10 支持默认把触摸提升鼠标事件 打开 Pointer 消息

我和 lsj 使用 spy++ 知道在 WPF 的标题栏点击的时候是可以收到 Windows 鼠标消息,也就是这里是 WPF 处理的

我和 lsj 说也许是之前的 WPF 框架的大佬写的时候还不知道有触摸,于是处理了鼠标事件。之后添加了触摸忘了需要去掉,于是触摸就可以使用。现在 lsj 正在看 WPF 的源代码,想要找到是如何让标题栏支持触摸但是不支持鼠标点击

WindowChrome Class (System.Windows.Shell)

WindowChrome.IsHitTestVisibleInChrome Attached Property (Microsoft.Windows.Shell)

关于WM_NCHITTEST消息 - Gang.Wang - 博客园

WM_TOUCH message - Windows applications

最新文章

  1. AndroidProjects个人项目归纳
  2. R语言学习笔记-机器学习1-3章
  3. 8.4.3 Glide
  4. Android--SQLite的使用
  5. CENTOS/UBUNTU一键安装IPSEC/IKEV2 VPN服务器
  6. python数据结构与算法——栈
  7. PHP中,文件上传实例
  8. SDR和DDR1/2/3全系列频率对照表
  9. SQL Server 2008 序列号
  10. c++类型转换Type Cast)
  11. Android之 compileSdkVersion, minSdkVersion, and targetSdkVersion
  12. 解决64位系统下IIS 8下Asp+Access网站配置
  13. 代码静态分析工具PC-LINT安装配置
  14. FPGA功能仿真,门级仿真,后仿真的区别
  15. JavaScript(第二天)【语法,变量】
  16. memcached /usr/local/memcached/bin/memcached: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
  17. the python challenge闯关记录(0-8)
  18. python Drools
  19. shell 学习之if语句
  20. Can&#39;t connect to MySQL server (10060) MySQL

热门文章

  1. 程序员如何面对 HR 面试的 40 个问题!
  2. HYNB Round 8: 2016 ICPC Amritapuri Regionals
  3. Win10系统无法安装可选功能提示错误代码0x800F081F的解决方法
  4. Spark历险记之编译和远程任务提交
  5. 【学术篇】NOIP2016 D1T3 luogu1850换教室
  6. android 中的一些小问题
  7. postgresql数据库安装后的pgadmin4中无法加载本地连接解决办法
  8. form表单简易注册登陆
  9. iPhone开发关于UDID和UUID的一些理解
  10. iOS之CGPath相关属性(一)