当前位置: 首页 > news >正文

C# Avalonia 11- DragInCanvasTest

使用开源例子,小小修改了下,使用了动态加载Behavior的方法。

https://github.com/wieslawsoltes/Xaml.Behaviors

DragInCanvasTest.axaml代码

<Window 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"Height="600" Width="450"x:Class="AvaloniaUI.DragInCanvasTest"Title="DragInCanvasTest"><!--https://github.com/wieslawsoltes/Xaml.Behaviors--><StackPanel Margin="5" Spacing="12"><TextBlock Text="MouseDragElementBehavior" HorizontalAlignment="Center"/><Canvas Width="300" Height="120" Background="LightGray"><Rectangle Fill="Red" Width="40" Height="40" Canvas.Left="20" Canvas.Top="20"><Interaction.Behaviors><MouseDragElementBehavior ConstrainToParentBounds="True" /></Interaction.Behaviors></Rectangle><Rectangle Fill="Green" Width="40" Height="40" Canvas.Left="120" Canvas.Top="20"><Interaction.Behaviors><MouseDragElementBehavior ConstrainToParentBounds="True" /></Interaction.Behaviors></Rectangle></Canvas><TextBlock Text="MultiMouseDragElementBehavior" HorizontalAlignment="Center"/><Canvas Width="300" Height="120" Background="LightGray"><Rectangle x:Name="MultiRect1" Fill="Blue" Width="40" Height="40" Canvas.Left="30" Canvas.Top="30"/><Rectangle x:Name="MultiRect2" Fill="Orange" Width="40" Height="40" Canvas.Left="90" Canvas.Top="40"/><Rectangle x:Name="MultiRect3" Fill="Purple" Width="40" Height="40" Canvas.Left="150" Canvas.Top="50"/></Canvas></StackPanel>
</Window>

DragInCanvasTest.axaml.cs代码

using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Avalonia.Xaml.Interactions.Draggable;
using Avalonia.Xaml.Interactivity;
using System.Linq;namespace AvaloniaUI;public partial class DragInCanvasTest : Window
{public DragInCanvasTest(){InitializeComponent();var rect1 = this.FindControl<Control>("MultiRect1");var rect2 = this.FindControl<Control>("MultiRect2");var rect3 = this.FindControl<Control>("MultiRect3");//动态添加BehaviorsInteraction.GetBehaviors(rect1!).Add(new MultiMouseDragElementBehavior() { ConstrainToParentBounds = true });//MultiRect1(rect1)是唯一点击控件if (rect1 is not null && rect2 is not null && rect3 is not null){var behavior = Interaction.GetBehaviors(rect1).OfType<MultiMouseDragElementBehavior>().FirstOrDefault();if (behavior is not null){behavior.TargetControls.Add(rect2);behavior.TargetControls.Add(rect3);}}}
}

运行效果

image

 

http://www.sczhlp.com/news/61668/

相关文章:

  • C#/.NET/.NET Core技术前沿周刊 | 第 52 期(2025年8.25-8.31)
  • 湖北省建设厅网站a群免费的域名解析
  • 做资讯网站做网站开发用哪种语言好
  • 百度做网站投广告最新新闻头条国家大事国际新闻
  • 石狮网站建设科技苏州找工作
  • 门户网站类型有哪些做盗版视频网站吗
  • iis 网站访问权限设置海尔商城网站建设维护
  • 溧阳网站建设报价简述网站开发过程
  • 简单网站建设方案外链都没有的网站如何做排名的
  • 医药网站怎么做wordpress 无法升级
  • 做外贸的网站有那些seo计费怎么刷关键词的
  • 制作网站流程图广东省医院建设协会网站
  • 网站工商网监标wordpress怎么禁用多域名
  • 株洲企业网站建设品牌北京互联网公司有哪些
  • 网页的依托网站网络推广哪个网站好
  • 凡科做数据查询网站erp软件定制公司
  • 环球资源网的定位淄博网络优化哪家专业
  • 做漫画网站的需求国外网站在国内做镜像站点
  • 网站建设方案 预算云技术在网站建设中的应用
  • 大美南京网站seo软文代写
  • 永嘉专业网站建设团队网页设计与制作考试
  • 互联网建站公司有哪些网站要备案吗
  • 网站建设维护和网页设计怎么访问域名网站
  • Java集合框架-15.TreeSet详解
  • 冻结列
  • 网站接入服务 公司网上购物平台类型
  • 咨询服务类网站建设室内设计就业前景如何
  • 汉力建设网站配置wordpress
  • 广州公司注册网站官网农村电子商务网站建设
  • html5高端装修公司网站源码市政道路毕业设计代做网站