C#WPF-自定义控件拖放(Visual Studio样式)

时间:2018-11-17 22:01:39

标签: c# wpf

我该如何使我的自定义控件在网格上可拖动和拖放?

我想将面板(自定义控件)拖放到屏幕上的某个位置,在网格的最佳情况下,例如在Visual Studio中的完成方式,您可以抓住解决方案资源管理器,比如说将其拖放到某个位置,但是我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

我发现this post的结论与此非常相似。区别在于规模。

以下示例将交换父容器

    int i = 0;
    void swapLocations()
    {

        foreach(var formObject in objList) //objList == a list or array on all objects you want to move from one container to another
        {

            if (i % 2 == 0)
            {

                // catch current position             
                Point moveLocation = new Point(formObject.Location.X + formObject.Parent.Location.X,formObject.Location.Y + formObject.Parent.Location.Y);

                // remove this object
                formObject.Parent.Controls.Remove(formObject);

                // add this object to the form
                this.Controls.Add(formObject);

                 // set location
                formObject.Location = moveLocation;

                formObject.SendToBack();
            }
            else
            {
                formObject.BringToFront();
            }
        }
        ++i;
    }

答案 1 :(得分:-1)

您需要构建您的项目,然后当您使用XAML设计器时,它将在工具箱中自动可用。就像常用控件一样。

对于运行时外观和官方WPF documentation的拖放。另外,我建议您查看GitHub中的GongSolutions.WPF.DragDrop库,它是开源的,因此,如果它提供的功能无法满足您的要求,您可以了解他们如何实现它。