2019-1-25-win10-uwp-禁用-ScrollViewer-交互
| title | author | date | CreateTime | categories |
|---|---|---|---|---|
|
win10 uwp 禁用 ScrollViewer 交互
|
lindexi
|
2019-01-25 21:45:37 +0800
|
2019-01-25 20:42:31 +0800
|
Win10 UWP
|
如果在 UWP 有一个控件里面有 ScrollViewer 控件,那么因为默认的 ScrollViewer 会使用触摸的交互,这样在控件就收不到触摸的交互
通过 VerticalScrollMode="Disabled" HorizontalScrollMode="Disabled" 可以关闭 ScrollViewer 交互
接下来就是简单告诉大家如何使用 ScrollViewer 在禁用默认交互还让 ScrollViewer 滑动,先创建一个简单的 UWP 项目
打开 xaml 添加一点代码,创建一个 Canvas 放在 ScrollViewer 内,在里面放一个矩形,通过这个矩形就可以知道有没有移动
<ScrollViewer>
<Canvas Width="100000" Height="10000000">
<Rectangle Width="100" Height="100" Fill="Black"
Canvas.Left="100" Canvas.Top="100" />
</Canvas>
</ScrollViewer>
创建的 ScrollViewer 只有对水平做滑动,尝试用触摸滑动矩形,会发现只能通过垂直滑动
如果想水平也可以滚动,需要设置 HorizontalScrollBarVisibility 属性,设置为 Auto Hidden Visible 都可以
<ScrollViewer HorizontalScrollBarVisibility="Hidden">
<Canvas Width="100000" Height="10000000">
<Rectangle Width="100" Height="100" Fill="Black" Canvas.Left="100" Canvas.Top="100" />
</Canvas>
</ScrollViewer>
现在再试试触摸矩形
如果现在尝试拿到 滚动条外面的 Grid 的 Manipulation 事件,可以看到没被被调用
<Grid Background="Transparent" ManipulationMode="TranslateX,TranslateY" ManipulationDelta="Grid_OnManipulationDelta">
<ScrollViewer HorizontalScrollBarVisibility="Hidden"
HorizontalScrollMode="Disabled"
VerticalScrollMode="Disabled">
<Canvas Width="100000" Height="10000000">
<Rectangle Width="100" Height="100" Fill="Black"
Canvas.Left="100" Canvas.Top="100" />
</Canvas>
</ScrollViewer>
</Grid> private void Grid_OnManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{ }
这里需要设置 Grid 的背景和设置 ManipulationMode 可以水平或垂直,设置 Grid 的背景是让 Grid 有命中测试,这样 UWP 才知道用户点击到哪个控件,通过 ManipulationMode 才可以让事件知道可以如何做
那么如何让 Grid 接收到 Manipulation 或者 Pointer 事件?
尝试下面的代码
<ScrollViewer HorizontalScrollBarVisibility="Hidden"
HorizontalScrollMode="Disabled"
VerticalScrollMode="Disabled">
……
</ScrollViewer>
此时就可以看到 Grid 收到 Pointer 事件
但是如果想要 ScrollViewer 外面的控件可以收到交互同时想要让 ScrollViewer 可以和之前一样,那么就需要自己写一些代码
首先给 ScrollViewer 命名,这样在后台代码才可以使用
private void Grid_OnManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
ScrollViewer.ChangeView(ScrollViewer.HorizontalOffset - e.Delta.Translation.X,
ScrollViewer.VerticalOffset - e.Delta.Translation.Y, null, true);
}
现在尝试运行一下代码,才不告诉大家 ChangeView 有一个属性需要修改为 true 看起来清真
2019-1-25-win10-uwp-禁用-ScrollViewer-交互的更多相关文章
- Win10/UWP开发—使用Cortana语音与App后台Service交互
上篇文章中我们介绍了使用Cortana调用前台App,不熟悉的移步到:Win10/UWP开发—使用Cortana语音指令与App的前台交互,这篇我们讲讲如何使用Cortana调用App的后台任务,相比 ...
- win10 uwp 入门
UWP是什么我在这里就不说,本文主要是介绍如何入门UWP,也是合并我写的博客. 关于UWP介绍可以参见:http://lib.csdn.net/article/csharp/32451 首先需要申请一 ...
- Alpha冲刺(2/10)——2019.4.25
所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(2/10)--2019.4.25 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪 ...
- win10 uwp 渲染原理 DirectComposition 渲染
本文来告诉大家一个新的技术DirectComposition,在 win7 之后(实际上是 vista),微软正在考虑一个新的渲染机制 在 Windows Vista 就引入了一个服务,桌面窗口管理器 ...
- Win10 UWP版《芒果TV》v2.4.0直播超女,芒果台综艺一网打尽
Win10 UWP版<芒果TV>直播超女,芒果台综艺一网打尽 Win10版UWP<芒果TV>自2015年9月登录商店以来,一直在持续更新,积极改进,拥有芒果台视频的独家点播和直 ...
- win10 uwp win2d CanvasVirtualControl 与 CanvasAnimatedControl
本文来告诉大家 CanvasVirtualControl ,在什么时候使用这个控件. 在之前的入门教程win10 uwp win2d 入门 看这一篇就够了我直接用的是CanvasControl,实际上 ...
- Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App
安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneG ...
- Win10 UWP开发系列:实现Master/Detail布局
在开发XX新闻的过程中,UI部分使用了Master/Detail(大纲/细节)布局样式.Win10系统中的邮件App就是这种样式,左侧一个列表,右侧是详情页面.关于这种 样式的说明可参看MSDN文档: ...
- Win10 UWP开发实现Bing翻译
微软在WP上的发展从原来的Win7到Win8,Win8.1,到现在的Win10 UWP,什么是UWP,UWP即Windows 10 中的Universal Windows Platform简称.即Wi ...
- 【Win10 UWP】后台任务与动态磁贴
动态磁贴(Live Tile)是WP系统的大亮点之一,一直以来受到广大用户的喜爱.这一讲主要研究如何在UWP应用里通过后台任务添加和使用动态磁贴功能. 从WP7到Win8,再到Win10 UWP,磁贴 ...
随机推荐
- iOS viewDidLayoutSubviews,viewdidload
由于种种原因,最近才开始真正在新项目中使用autolayout,使用过程中虽说是比较顺畅,但是也遇到了一些麻烦,比如: 我使用的XIB默认是4寸屏幕,我再XIB中增加一个viewA,宽度为320,约束 ...
- oracle-Immediate
从shutdown immediate命令发布起,禁止建立任何新的oracle连接 未提交的事务被回退.因此,处于一个事务中间的用户将失去所有未提交的劳动成果. oracle不等待客户断开连接.任何未 ...
- php 常用类汇总
转自:http://www.blhere.com/953.html 图表库 下面的类库可以让你很简单就能创建复杂的图表和图片.当然,它们需要GD库的支持. pChart - 一个可以创建统计图的库. ...
- sql —— 自动增长列
1.设置自动增长列 设置完毕添加数据这个字段就不用再手动添加了,会从10001开始,每条数据自动加1.
- Java练习 SDUT-2444_正方形
正方形 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 给出四个点,判断这四个点能否构成一个正方形. Input 输入的 ...
- iOS开发 分享到QQ空间提示"分享失败 应用不存在"
本人遇到该问题的原因是配置SDK初始化时的APPID错误,可以参考下shareSDK的集成文档中的一段话: 可选:支持QQ所需的相关配置及代码 登录QQ互联(http://connect.qq.com ...
- jQuery 无刷新评论
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Mac OSX原生读写NTFS功能开启方法
macOX系统内建的NTFS支持默认只能读不能写 原生读写NTFS,需要自行终端命令手动开启 1. 插上磁盘 此时Mac桌面应该会显示出插入的磁盘,但是当你想把文件拖入磁盘的时候,发现是不能拖进去的, ...
- 开源中国 2014 最受关注开源软件排行榜 TOP 50
开源中国 2014 最受关注开源软件排行榜 TOP 50 开源中国 2014 年最受关注软件排行榜 TOP 50 正式出炉!2014 年结束了,我们来了解一下过去一年里开源中国最受欢迎的 50 款软件 ...
- oracle使用表的别名(Alias)
当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误. (Column歧义指的是由于SQL中不同 ...