RS2下让.NET4.7的WPF程序原生支持触屏操作

vbfool UID.352791
2017-04-22 发表

首先这东西只有.NET4.7支持,而.NET4.7暂时只有Win10RS2自带,目前还没有其它安装渠道。
在你程序的App.Config文件里加入
[mw_shl_code=xml,true] <runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Input.Stylus.EnablePointerSupport=true"/>
</runtime>[/mw_shl_code]
这一段,就可以启动WPF的触屏手势了,不用再自己去改ScrollViewer了。
嗯,完整的配置文件大概这样:
[mw_shl_code=xml,true]<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
</startup>
<runtime>
<AppContextSwitchOverrides value="Switch.System.Windows.Input.Stylus.EnablePointerSupport=true"/>
</runtime>
</configuration>[/mw_shl_code]

理论上讲,把现有的程序配置文件改了,也会有这个效果,配合Win32转制功能,做些未来能在Win10Cloud版运行的程序,也不是不可以。

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
tmp00000 UID.995403
2017-04-23 回复

visual studio 里面的 4.7 目标包和 sdk 装上应该就有运行环境了吧?

qa****ak UID.1104291
2017-04-23 回复

太不容易了啊....不过有鸟用? 还不如用ListView绑定MVVM方便

不过ListView另一个蛋疼的问题是Virtualize. 根本没办法做成一行多个数据. 只支持StackPanel, 却不支持WrapPanel是个硬伤啊..... 不做Virtualize的话平板CPU一旦加载的东西多了, 马上卡顿.

vbfool UID.352791
2017-04-24 回复

Quote***链接停止解析***
visual studio 里面的 4.7 目标包和 sdk 装上应该就有运行环境了吧?


嗯,要vs2017,我不知道Win7下装2017有没有用,手头没Win7。

vbfool UID.352791
2017-04-24 回复

Quote***链接停止解析***
太不容易了啊....不过有鸟用? 还不如用ListView绑定MVVM方便

不过ListView另一个蛋疼的问题是Virtualize. ...


不不不,不是这个意思,主要的地方是触屏支持。
你创建一个WPF程序,不加这个支持的话,你用ListBox和ListView之类的列表控件,是不能直接划屏幕滚动列表的,你只能用手去拖那个滚动条。
但是打开这个功能之后,你就可以像UWP程序一样,滚动列表了。
至于为什么我说到ScrollViewer,是因为这些滚动操作,本质上都是基于ScrollViewer的。

vbfool UID.352791
2017-04-25 回复

昨天再次的研究,发现好像有点说的不对,似乎升级了RS2之后,任何WPF的列表都带滚动了,但是4.7的滚动效果和其它的仍然不是一样的。
没有测试winform的列表,也没测试过win7下能不能行(手头没有带触屏的win7)

qa****ak UID.1104291
2017-04-28 回复

Quote***链接停止解析***
昨天再次的研究,发现好像有点说的不对,似乎升级了RS2之后,任何WPF的列表都带滚动了,但是4.7的滚动效果 ...


意思是跟系统有关系, 而不是跟.NET有关?

vbfool UID.352791
2017-04-28 回复

Quote***链接停止解析***
意思是跟系统有关系, 而不是跟.NET有关?


嗯,很有可能是这样,不知道你的平板有没有升级RS2,如果没升级,随便找个有列表可以上下滚动的程序打开,滚动一下列表试试。创作者更新里,我随手写了个.NET4.5的WPF程序,弄了个1000个项的列表,滚动的时候,会在触摸的地方出来一个小十字图标。
但是我记得当初刚升级Win10的时候,是没这个效果的。
不过.NET4.7的程序,滚动的时候,是没这个光标的,和UWP的程序效果几乎一样。

qa****ak UID.1104291
2017-04-29 回复

Quote***链接停止解析***
嗯,很有可能是这样,不知道你的平板有没有升级RS2,如果没升级,随便找个有列表可以上下滚动的程序打开 ...


我记不太清楚了. 不过貌似有一些效果我禁止了以后才重新单独做了滚动效果的. 我记得自己写的滚动效果, 在一些便宜的Windows 平板上如果太多的item就会很卡. 当初是XAML上禁止了 Stylus.一些属性.
你那个item试着放一些图片和多个Trigger. 看一下如果有几千个项时是否变卡. 我为这个头疼很多, 特别是WrapPanel代替了ListView(还是ListBox记不清了)的面板展示方式(原始貌似是StackPanel)后不能用Virtualization. 我当初测试时用的一些国产的便宜平板(x5-Z8300 CPU)

为了照顾XP, 我一直用.NET4

tmp00000 UID.995403
2017-05-07 回复

Quoteqakmak 发表于 2017-4-29 01:58
我记不太清楚了. 不过貌似有一些效果我禁止了以后才重新单独做了滚动效果的. 我记得自己写的滚动效果, ...


你可以建立三个项目。 一个是 .net framework 4 client profile 的 WPF 应用程序, 添加编译条件 WINDOWS_XP。 另一个是 .net framework 4.7 的 WPF 应用程序,并且添加触摸手势声明。 第三个项目是共享项目,存放 XAML 和 大多数的后台代码文件,让前两个项目引用。使用编译条件 WINDOWS_XP 区别对待不同的运行时。

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报