(UWP开发)在ListView中通过向右滑动展开汉堡菜单
首先在移动APP开发中,手势滑动已经成为一个必备的技能,无论大大小小的APP都需要拥有手势滑动功能。在Android和iOS操作系统的APP中,手势滑动比较普及。然而由于国内有关UWP应用的教程比较少,所以新的开发者在这一块可能达不到其他两个平台的能力和标准。所以今天本人在这里给大家介绍一种手势滑动的方法,希望和大家交流交流。
我这里介绍的手势滑动场景是在拥有以ListView等控件为主的界面中,通过手势滑动来展开汉堡菜单。有关ListView和SplitView的相关内容就不在这里一一介绍了。下面是功能的实现过程:
1.首先更改Listview的ItemTemplate中的DataTemplate
<DataTemplate x:Key="News_Without_Photo">
<RelativePanel Padding="5,10,5,10" ManipulationMode="System,TranslateX">
<TextBlock x:Name="news_title" Text="{Binding title}" TextWrapping="Wrap" TextTrimming="WordEllipsis" FontSize="" FontWeight="Bold" RelativePanel.AlignTopWithPanel="True"></TextBlock>
</RelativePanel>
</DataTemplate>
注意:这里有一个重要内容。因为ListView本身自带滑动模式,要是直接添加我们自己的滑动手势会被ListView屏蔽掉。所以在这个地方,我在DataTemplate中放一个最外层的RelativePanel,或者你用相似的布局控件也可以。在这个地方,ManipulationMode属性设置成“System,TranslateX”。这样子就解决了这个问题。
2.编写后台cs代码
double x = ;//用来接收手势水平滑动的长度 public TravelListsPage()
{
this.InitializeComponent();
ManipulationCompleted += The_ManipulationCompleted;//订阅手势滑动结束后的事件
ManipulationDelta += The_ManipulationDelta;//订阅手势滑动事件
} private void The_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)//手势滑动中
{
x += e.Delta.Translation.X;//将滑动的值赋给x
} private void The_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)//手势滑动结束
{
if (x > )//判断滑动的距离是否符合条件
{
splitview.IsPaneOpen = true;//打开汉堡菜单
}
}
在这里,我们通过订阅了事件ManipulationDelta和事件ManipulationCompleted的事件处理方法来完成手势滑动展开汉堡菜单。基本的实现过程很简单。首先在类中定义一个字段x,这个字段用来接收指针或手指在屏幕上的位移量。然后当手势滑动开始时,The_ManipulationDelta方法将位移量不断赋值给x。在手势滑动结束之后,The_ManipulationCompleted方法进行滑动过程的分析判断。当判断当前的手势操作可以打开汉堡菜单时,SplitView的IsPaneOpen属性为true。至此,整个手势滑动展开汉堡菜单的过程结束。
如果大家有什么好的想法或是觉得我的思路有所不足,欢迎评论,谢谢。
(UWP开发)在ListView中通过向右滑动展开汉堡菜单的更多相关文章
- [UWP开发]在windows10中设置壁纸~UserProfilePersonalizationSettings
在之前的wp8.1和wp8中,微软没有公开设置壁纸的API,只有一个设置锁屏的API,但在Windows10中,微软为我们提供了设置壁纸的API:TrySetWallpaperImageAsync,他 ...
- odoo开发笔记--一个模块显示两个一级菜单
场景描述: 在已启动开发的模块中,odoo顶部一级菜单只有一个“会员管理”,需求是:在同一级顶部菜单,增加新菜单“产品管理”.举例如图: 处理方式: 按照odoo的机制,实现这种效果,可以 ...
- 张高兴的 UWP 开发笔记:横向 ListView
ListView 默认的排列方向是纵向 ( Orientation="Vertical" ) ,但如果我们需要横向显示的 ListView 怎么办? Blend for Visua ...
- Viewbox在UWP开发中的应用
Windows 8.1 与Windows Phone 8.1的UAP应用,终于在Windows 10上统一到了UWP之下.原来3个不同的project也变为一个.没有了2套xaml页面,我们需要用同一 ...
- Windows10(uwp)开发中的侧滑
还是在持续的开发一款Windows10的应用中,除了上篇博客讲讲我在Windows10(uwp)开发中遇到的一些坑,其实还有很多不完善的地方,比如(UIElement.Foreground).(Gra ...
- UWP开发入门(十)——通过继承来扩展ListView
本篇之所以起这样一个名字,是因为重点并非如何自定义控件,不涉及创建CustomControl和UserControl使用的Template和XAML概念.而是通过继承的方法来扩展一个现有的类,在继承的 ...
- UWP开发入门(十四)—— UserControl中Adaptive UI的小技巧
本篇我们通过绘制一个非常简单的UserControl控件,来分享一下对Adaptive UI的理解及一些图形绘制的技巧. 现在流行的APP都少不了精致的用户头像,首先假设我们需要绘制如下的图形作为默认 ...
- UWP开发中的方向传感器
在UWP开发中,我们能使用的到方向有三种: OrientationSensor下的四元数:Compass罗盘的HeadingMagneticNorth:以及SimpleOrientationSenso ...
- UWP: ListView 中与滚动有关的两个需求的实现
在 App 的开发过程中,ListView 控件是比较常用的控件之一.掌握它的用法,能帮助我们在一定程度上提高开发效率.本文将会介绍 ListView 的一种用法--获取并设置 ListView 的滚 ...
随机推荐
- 8Spring初步----青软S2SH(笔记)
例子: bean.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...
- linux下的ssh工具之,本地上传到linux服务器and Linux服务器文件另存为本地。非sftp工具。
首先,当你只有一个ssh工具可以连接linux,但你有想把文件在 linux 和windows(本地)直接的切换.其实可以的: 本文参考 1.将本地的文件,放到ssh远程的linux服务器上: 首先要 ...
- SQL Server 2016 RC0 安装(超多图)
微软最新版本的数据库SQL Server 2016在2016年3月9日推出了RC0版本.已经提供了包括简体中文等多种语言版本,不过联机丛书还是英文版的.对OS的要求是WIN8,WIN10, WIN20 ...
- CSS清浮动处理(Clear与BFC)
在CSS布局中float属性经常会被用到,但使用float属性后会使其在普通流中脱离父容器,让人很苦恼 1 浮动带来布局的便利,却也带来了新问题 <!doctype html> <h ...
- WinForm下增加声音提示
在WinForm平台下播放声音,一般有两种方式:第一种是调用系统自带声音: [代码] 申明定义: [DllImport("kernel32.dll")] public static ...
- Android 数字签名
一个ApK如果要安装到手机上,必须要一个数字签名,不过你是debug也好,release也好,这个数字签名来源一个叫做证书的东西,在我们debug的时候,开发工具已经帮我们生成了一个叫做debug.k ...
- ubuntu
mongoChef: http://3t.io/mongochef/download/core/platform/#tab-id-3 背景色改成豆沙绿: /usr/share/themes/Ambia ...
- python table转空格
有需求: 预留,先上代码: import os def Table_Space(file_name,lis_out,tab_num = 4): file_str = open(file_name,&q ...
- Centos7下面配置静态IP
修改网卡配置文件(操作前先备份一下该文件),/etc/sysconfig/network-scripts/ifcfg-enp0s3 ,如下: TYPE=Ethernet BOOTPROTO=stati ...
- 《PHP数组函数》笔记
① in_array() 检查数组中是否存在某个值;有两个参数,第一个参数是要查找的值,第二个参数是数组名,返回值为布尔,找到则ture否则false; ② array_search 在数组中搜索给定 ...