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的命令属性

<Window ...
        xmlns:bh="clr-namespace:DzlWpf.DoubleTouchBehavior;assembly=DzlWpf.DoubleTouchBehavior">
        <Grid>
            ...
            <Border bh:DoubleTouched.Command="{Binding DoubleTouchCommand}"
                Width="80" Height="80" HorizontalAlignment="Center" VerticalAlignment="Center" Background="LightGreen"/>
        </Grid>
</Window>
        

 然后打开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,如下:

        <Border bh:DoubleTouched.Command="{Binding SharedDoubleTouchCommand}" bh:DoubleTouched.CommandParameter="左上" bh:DoubleTouched.TouchShared="True"
                Width="80" Height="80" HorizontalAlignment="Left" VerticalAlignment="Top" Background="LightBlue"/>
        <Border bh:DoubleTouched.Command="{Binding SharedDoubleTouchCommand}" bh:DoubleTouched.CommandParameter="右上"  bh:DoubleTouched.TouchShared="True"
                Width="80" Height="80" HorizontalAlignment="Right" VerticalAlignment="Top" Background="LightBlue"/>

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

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

        ...

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

        ...

        public DelegateCommand<string> SharedDoubleTouchCommand { get; private set; }

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

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

 3、设置双击间隔

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

 <Border bh:DoubleTouched.TouchInerval="3000" ...>

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

 本文源码:WpfDoubleTouchBehavior

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
WPF(Windows Presentation Foundation)是一种用于创建Windows应用程序的用户界面框架,它提供了丰富的图形、动画和多媒体功能,非常适合实现图片浏览器功能。 首先,我们可以使用WPF的布局控件,如Grid、StackPanel、WrapPanel等来创建图片浏览器的布局。可以将图片以网格状、列表状或者平铺方式显示出来,通过设置布局控件的属性来达到不同显示效果。 然后,我们可以使用WPF的Image控件来显示图片。通过绑定图片路径,将图片加载到Image控件上,并设置合适的布局和尺寸,使得图片在浏览器中呈现出较好的显示效果。同时可以利用WPF的特性,如绑定、命令等来实现图片的放大、缩小、旋转、拖拽等交互操作。 另外,为了实现图片浏览器的导航功能,我们可以使用WPF的按钮、菜单和导航控件,如ToolBar、Menu、TabControl等来增加上一页、下一页、首页、尾页、放大、缩小等功能按钮,并通过事件绑定和命令来实现相关操作。 此外,WPF还提供了强大的动画和过渡效果功能,我们可以利用这些功能,为图片浏览器增加一些华丽的过渡效果,如渐变、旋转、淡入淡出等,提升用户体验。 最后,在WPF中,我们可以采用MVVM(Model-View-ViewModel)架构来实现图片浏览器的功能。通过创建ViewModel类,将图片数据和操作逻辑与界面分离,实现数据绑定和命令绑定,提高代码的可维护性和重用性。 总的来说,WPF提供了许多强大的功能和灵活的设计模式来实现图片浏览器功能,开发者可以根据自己的需求和技术实力,选择最适合的方案来完成项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沝林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值