WPF实现拖动控件功能(类似从工具箱拖出工具)
一、背景
下面代码只是简单示例,未使用MVVM模式编写
(图片来源网络,侵删)
二、工具箱(ListBox)
2.1 前端代码
Tool 1 Tool 2
2.2 前端事件
2.2 后端拖动代码
private void ListBoxItem_PreviewMouseMove(object sender, MouseEventArgs e) { if(sender is ListBoxItem item) { DragDrop.DoDragDrop(item, item.Content, DragDropEffects.Copy); } }
三、工作页面(Canvas)
3.1 前端代码
3.2 后端获取工具放置坐标
private Point startPoint; private void FlowChartCanvas_PreviewDragOver(object sender, DragEventArgs e) { startPoint = e.GetPosition(FlowChartCanvas); }
3.3 后端放置工具
private void FlowChartCanvas_PreviewDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.StringFormat)) { var tool = e.Data.GetData(DataFormats.StringFormat) as string; if (tool != null) { var element = new TextBlock { Text = tool, Background = Brushes.LightBlue, Width = 100, Height = 30 }; Canvas.SetLeft(element, startPoint.X); Canvas.SetTop(element, startPoint.Y); FlowChartCanvas.Children.Add(element); } } }
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。