当前位置:网站首页>【wpf】拖拽的简单实现
【wpf】拖拽的简单实现
2022-08-10 00:54:00 【code bean】
前台代码部分
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<StackPanel Background="AliceBlue">
<Border Height="40" Background="Chocolate" MouseLeftButtonDown="Border_MouseLeftButtonDown">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">拖拽</TextBlock>
</Border>
</StackPanel>
<Canvas x:Name="canvas" Grid.Column="1" Drop="Canvas_Drop" AllowDrop="True" Background="Transparent"/>
</Grid>
这里有个几个注意的地方:
1 cavar是拖拽的放置对象,需要设置如下:
- Drop事件,拖拽完成时触发
- AllowDrop, 允许拖拽
- Background,设置一个颜色,不然无法接收到事件。
三者缺一不可。
后台代码部分
Border 是被拖拽的对象,在鼠标左键按下后,需要在后台添加一些代码。
private void Border_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Border border = (Border)sender;
DragDrop.DoDragDrop(border, "test", DragDropEffects.Copy);
}
这是一个创建拖拽对象的过程。 后续可以在拖拽事件中获取相应的参数:
private void Canvas_Drop(object sender, DragEventArgs e)
{
var data = e.Data.GetData(typeof(string));
Button btn = new Button();
btn.Content = data;
canvas.Children.Add(btn);
var point = e.GetPosition(canvas);
Canvas.SetLeft(btn, point.X);
Canvas.SetTop(btn, point.Y);
Debug.WriteLine("Canvas_Drop");
}
e.Data.GetData(typeof(string)); 获取的是我创建拖拽对象时,传入的第二个参数。
e.GetPosition(canvas); 可以获取拖拽完成时,鼠标相对于canvas的位置坐标!
效果展示
边栏推荐
猜你喜欢
这一次,话筒给你:向自由软件之父 Richard M. Stallman 提问啦!
UI遍历的初步尝试
Experimental support for decorators may change in future releases.Set the "experimentalDecorators" option in "tsconfig" or "jsconfig" to remove this warning
Initial attempt at UI traversal
开发IM即时通讯容易吗?需要什么技术
Summary of Web Performance Testing Models
将string类对象中的内容格式化到字符串Buffer中时遇到的异常崩溃分析
万字总结:分布式系统的38个知识点
2022金九银十工作潮,怎么样才能成功跳槽面试拿到高薪呢?
OSS-访问oss生成的url无法访问,直接下载问题
随机推荐
CMake 编译运行dpdk项目程序
Mysql database ALTER basic operations
芯片资讯|半导体收入增长预计将放缓至 7%,蓝牙芯片需求依然稳步增长
Interdepartmental Communication Skills
将string类对象中的内容格式化到字符串Buffer中时遇到的异常崩溃分析
Involved in PEG-Biotin (CAS: 1778736-18-7) Biotin-PEG4-OH is widely used in molecular target detection
Fedora 36 dnf 安装ModSecurity和 OWASP 核心规则集
Pagoda measurement - building LightPicture open source map bed system
【论文笔记】基于深度学习的机器人抓取虚拟仿真实验教学系统
DP 优化方法合集
JDBC数据库连接池练习题
【kali-密码攻击】(5.2.1)密码分析:Hash Identifier(哈希识别)
eyb:Redis学习(4)
宽带由20M换为100M
JVM :运行时数据区-虚拟机栈
Pyscript,创建一个能执行crud操作的网页应用
Aptos 深度解读:机遇、挑战与风险
Minimum number of steps to get out of the maze 2
unity编辑器扩展界面使用 List
22.括号生成