Avalonia 手势操作GestureRecognizer示例

Avalonia 手势操作GestureRecognizer示例

Avalonia是.Net跨平台的UI库,支持Windows,Linux,iOS,MacOS,Android等;
本文测试内容为使用Avalonia监控上下左右滑动手势操作动作并触发事件;
手势操作支持安卓及PC电脑,并区分长滑动和短滑动;本文代码

步骤

  1. 安装Avalonia For VS2022扩展
  2. 新建名为LRGestureRecognizer的Avalonia Cross Platform项目
  3. 将LRGestureRecognizer主工程及各个平台的启动工程改为.Net8
  4. LRGestureRecognizer工程增加如下引用
		<PackageReference Include="Prism.Avalonia" Version="8.1.97.11000" />
		<PackageReference Include="Prism.DryIoc.Avalonia" Version="8.1.97.11000" />
  1. 写代码,主要为SliderGestureRecognizer类的实现
  2. 启动及调试代码

关键代码

// MainView.axaml.cs
    public partial class MainView : UserControl
    {
        MainViewModel VM;
        public MainView()
        {
            InitializeComponent();
            VM = new MainViewModel();
            DataContext = VM;
            // mainview.GestureRecognizers.Add(new LeftRightSlideGestureRecognizer());
            mainview.GestureRecognizers.Add(new SliderGestureRecognizer());
            mainview.AddHandler(SliderGestureRecognizer.MySliderEvent, PullGestureEndedEvent_Sub);
        }

        private void PullGestureEndedEvent_Sub(object? sender, SlideEventArgs e)
        {
            if (e.Slide == SlideEventType.SlideLeft || e.Slide == SlideEventType.LongSlideLeft)
            {
                VM.Greeting = e.Slide.ToString();
            }
            else
            {
                VM.Greeting = e.Slide.ToString();
            }
            System.Diagnostics.Debug.WriteLine(e.Slide);
        }
    }
<UserControl x:Class="LRGestureRecognizer.Views.MainView"
             xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:vm="clr-namespace:LRGestureRecognizer.ViewModels"
             x:Name="mainview"
             d:DesignHeight="450"
             d:DesignWidth="800"
             x:DataType="vm:MainViewModel"
             Background="Azure"  
             mc:Ignorable="d">
    <Design.DataContext>
        <vm:MainViewModel />
    </Design.DataContext>
	<!-- UserControl的Background必须要设置,不可为空 -->
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Greeting}" />
</UserControl>
// SliderGestureRecognizer.cs
 /// <summary>
 /// 全部方向都触发
 /// <para></para>
 /// </summary>
 public class SliderGestureRecognizer : GestureRecognizer
 {
     public static readonly RoutedEvent<SlideEventArgs> MySliderEvent
         = RoutedEvent.Register<SlideEventArgs>("MySliderEvent", RoutingStrategies.Bubble, typeof(Gestures));
     /// <summary>
     /// 允许鼠标触发
     /// <para>Default:true</para>
     /// </summary>
     public bool EnableMouse { get; set; }
     /// <summary>
     /// 方向
     /// <para>Default:Vector(1, 0)</para>
     /// </summary>
     public Vector Direction { get; set; }
     /// <summary>
     /// 距离 
     /// <para>Default:6</para>
     /// </summary>
     public float Distance { get; set; }
     private int _LongMultiple = 2;
     /// <summary>
     /// 长滑判断倍数
     /// <para>Default:2</para>
     /// </summary>
     public int LongMultiple
     {
         get => _LongMultiple;
         set
         {
             _LongMultiple = Math.Clamp(value, 1, 10000);
         }
     }

     public SliderGestureRecognizer()
     {
         Direction = new Vector(1, 0); // 设置手势方向为向左 
         Distance = 6;
         EnableMouse = true;
         if (LRGestureRecognizer.App.IsPCType)
         {
             LongMultiple = 3;
             Distance = 20;
         }
     }
     // 省略若干代码
}

效果

在这里插入图片描述

备注

  1. MainView.axaml的UserControl的Background一定要设置,否则没有效果
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Avalonia是一个跨平台的用户界面框架,可以用于构建现代化的、具有吸引力的客户端应用程序。它给开发者提供了一套丰富的工具和API,使得开发定制化的UI变得更加简单和高效。 Avalonia的文档是一个完整指南,可以帮助开发者了解和学习如何使用Avalonia框架来构建应用程序。文档分为几个部分,包括入门指南、概念和架构、框架特性、控件库和示例。通过这些文档,开发者可以掌握Avalonia的基本概念和工作原理,了解如何使用不同的工具和API来开发具有吸引力的界面。 入门指南部分提供了安装和配置Avalonia框架的详细说明,包括使用命令行和包管理器安装、创建新项目和设置开发环境等。概念和架构部分解释了Avalonia的核心概念,例如界面元素、布局和事件系统,并介绍了Avalonia的整体架构和组件。 框架特性部分介绍了Avalonia提供的各种功能和特性,例如样式和主题、绑定和命令系统、动画和动态布局等。控件库部分详细介绍了Avalonia内置的各种控件类型和自定义控件的开发方法。示例部分提供了一些完整的示例代码,帮助开发者更好地理解和应用Avalonia框架的各种功能。 总之,Avalonia的文档是一个非常有价值的资源,可以帮助开发者快速入门和提高使用Avalonia框架的能力。无论是初学者还是有经验的开发者,都可以从这些文档中获得有关Avalonia框架的宝贵知识。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

文光山石

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

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

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

打赏作者

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

抵扣说明:

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

余额充值