WPF实现拖动控件功能(类似从工具箱拖出工具)

2024-03-19 1943阅读

一、背景

    下面代码只是简单示例,未使用MVVM模式编写

WPF实现拖动控件功能(类似从工具箱拖出工具)
(图片来源网络,侵删)

二、工具箱(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);
        }
    }
}
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]