原文:#747 –在WPF程序的触摸操作中使用惯性移动 (Implementing Inertia during Touch Manipulation) 原文地址:https://wpf.2000things.com/2013/02/01/747-implementing-inertia-during-touch-manipulation/ 在WPF触摸操作滑动控件的时候,有的时候希望控件能够在手指离开控件后依照惯性继续滑动,直至慢慢减速停止.默认情况下这个功能是不开启的,当手指离开控件后,控件…
WPF 自诞生以来就带着微软先生的傲慢.微软说 WPF 支持触摸,于是 WPF 就真的支持触摸了.对,我说的是"支持触摸",那种摸上去能点能动的:偶尔还能带点儿多指的炫酷效果.但是,WPF 推出那会儿,绝大部分开发者都还没有触摸屏呢,开发个程序要怎么验证支不支持触摸呢?微软先生无奈地决定--你写鼠标的代码就好了,我帮你转换!于是--一大波 BUG 袭来-- WPF 触摸失效的分类 我将 WPF 的触摸失效总结成三种不同的类型. 触摸下 Stylus/Touch 事件正常触发,但不提升为…
原文:通过 AppSwitch 禁用 WPF 内置的触摸让 WPF 程序可以处理 Windows 触摸消息 WPF 框架自己实现了一套触摸机制,但同一窗口只能支持一套触摸机制,于是这会禁用系统的触摸消息(WM_TOUCH).这能够很大程度提升 WPF 程序的触摸响应速度,但是很多时候又会产生一些 Bug. 如果你有需要,可以考虑禁用 WPF 的内置的实时触摸(RealTimeStylus).本文介绍禁用方法,使用 AppSwitch,而不是网上广为流传的反射方法. 本文内容 如何设置 AppSw…
原文:WPF 插拔触摸设备触摸失效 最近使用 WPF 程序,在不停插拔触摸设备会让 WPF 程序触摸失效.通过分析 WPF 源代码可以找到 WPF 触摸失效的原因. 在 Windows 会将所有的 Hid (输入)设备在插拔的时候通过 Windows 消息进行更新设备信息.在触摸的时候,通过一个线程用来收集触摸信息. 本文下面的代码是通过 dnSpy反编译调试. 存在的问题 通过 WPF 的源代码可以发现存在两个问题,两个问题在两个不同的类 在 PenThreadWorker 的 GetPenE…
原文:WPF 禁用实时触摸 微软想把 WPF 作为 win7 的触摸好用的框架,所以微软做了很多特殊的兼容.为了获得真实的触摸消息,微软提供了 OnStylusDown, OnStylusUp, 和 OnStylusMove 事件. 本文告诉大家如何使用代码禁用 WPF 的触摸消息,解决一些问题. 在 win7 还提供了多点触摸 windows 消息 WM_TOUCH ,通过这两个 API 一个是 OnStylusDown 这些事件,另一个就是 WM_TOUCH ,用户可以拿到触摸消息. 这两个…
本项目环境:使用VS2010(C#)编写的WPF程序,通过CefSharp在程序的窗体中打开网页.需要能够实现网页后台JS代码中调用的方法,从网页接收数据,并能返回数据给网页.运行程序的电脑不允许上网,要求通过局域网内一个指定的代理服务器联网,并且只有该程序能通过代理服务器打开网页,直接用浏览器或其他应用程序仍然不允许上网(因此不能直接更改本机的LAN设置). 首先介绍一下CefSharp,它是基于Google浏览器的一个组件,是可以用在WPF/WinForm客户端软件中的嵌入式浏览器. 如果你…
WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了>的续,关于<Visual Studio 版本转换工具WPF版开源了>可以参看地下地址(两篇是一样的): 开源中国 http://my.oschina.net/chinesedragon/blog/308336 CNBLOGS http://www.cnblogs.com/luoshupeng/p/3946635.html ** 博客园的Markdown编辑器真的不行,…
这篇博客介绍如何在Windows 7下应用Windows 8的主题. 首先我们先看一个很常见的场景,同样的WPF程序(样式未重写)在不同的操作系统上展示会有些不同.这是为什么呢?WPF程序启动时会加载与操作系统对应的主题.下面将列出常见的OS主题与WPF主题的关系. 针对不同操作系统的主题,WPF程序会加载不同的主题assembly.这样就形成了同样的XAML代码在不同的OS中展示效果. 回到这篇博客的主题,为Windows 7下的WPF程序应用Windows 8主题.通过上面的表格,可以知道,…
在设置wpf程序全屏后,点击某个listbox列表,发现程序下面出现了任务栏. 查找解决答案未果.仔细一想可能是win8系统的问题. 最后试着把listbox的滚动条去掉了,问题解决. 原因:当程序中出现滚动条时,程序窗口可以拖,这是win8的特效. 解决:遇到这种问题,把出现滚动条的地方都修改让它不出现.…
这篇博客将介绍一些提高WPF程序的建议(水平有限,如果建议有误,请指正.) 1. 加快WPF程序的启动速度: (1).减少需要显示的元素数量,去除不需要或者冗余的XAML元素代码. (2).使用UI虚拟化,只显示当前需要显示的元素. (3).不要把不要显示的自定义控件隐藏在主界面中,虽然它们不会显示出来,但是程序启动时还是会去计算自定义控件所需的空间和位置. 2. 耗时操作放在放在非UI线程上处理,保持UI的顺畅.处理完成后如果需要在UI上展示,调用Dispatcher.BeginInoke()…