栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

Wpf之触屏双击功能的实现

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Wpf之触屏双击功能的实现

        我们在开发触摸屏应用程序时,通常是全屏应用程序,而且一般也不会接键盘,这时候要打开某些快捷键功能,比如退出程序,弹出设置界面等,这些功能如果不能以按钮显示,就必须要通过屏幕点击来实现,但是Wpf本身没有类似屏幕双击功能的事件,单击事件又容易误触,本文将通过示例来介绍不同方式的屏幕双击功能。

 我已将实现触屏双击行为的功能封装到package中,可通过nuget包管理器或.net cli工具安装

dotnet add package DzlWpf.DoubleTouchBehavior

代码也已开源,地址:https://github.com/duanzlin/WpfDoubleTouchBehavior

使用方法:

这里我们使用的是prism模板创建的mvvm的项目, 操作方法可见https://github.com/PrismLibrary/Prism; 同时安装DzlWpf.DoubleTouchBehavior的nuget包

1、首先看一个简单的场景,即单个元素的双击事件;

打开MainWindow.xaml,在屏幕中央添加触摸元素Border,并通过附加属性绑定双击行为到viewmodel的命令属性


        
            ...
            
        

        

 然后打开MainWindowViewModel,添加mvvm命令属性和方法:

        public MainWindowViewModel()
        {
            DoubleTouchCommand = new DelegateCommand(OnDoubleTouched);
        }

        private void OnDoubleTouched()
        {
            System.Windows.MessageBox.Show("这是双击效果");
        }

        public DelegateCommand DoubleTouchCommand { get; private set; }

运行程序,触摸双击中央绿色区域,可以看到消息对话框

2、接着我们看另一种应用场景,多个元素相互的双击事件,比如在屏幕中先点击左上角,然后点击右上角,再触发事件,这时需要在页面左上和右下添加两个Border来触发点击事件,设置附加属性TouchShared为true,TouchShared为false时只能触发单个元素双击事件;然后为两个border设置附加属性命令参数CommandParameter,如下:

        
        

然后打开MainWindowViewModel,添加命令属性和处理方法:

        public MainWindowViewModel()
        {
            ...
            SharedDoubleTouchCommand = new DelegateCommand(OnSharedDoubleTouched);
        }

        ...

        private void OnSharedDoubleTouched(string args)
        {
            System.Windows.MessageBox.Show("双击结果:" + args);
        }

        ...

        public DelegateCommand SharedDoubleTouchCommand { get; private set; }

对于多种点击组合,可以根据args的值来判断要执行的业务逻辑

运行程序,依次触摸左上和右上区域,可以看到消息对话框

 3、设置双击间隔

默认双击间隔是2000毫秒,如果要自定义,可以在触摸元素上添加附加属性TouchInterval

 

 这里只实现触摸双击的功能,如果要实现鼠标双击,只需要修改源码里如下内容即可

 本文源码:WpfDoubleTouchBehavior

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983702.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号