我该如何使我的自定义控件在网格上可拖动和拖放?
我想将面板(自定义控件)拖放到屏幕上的某个位置,在网格的最佳情况下,例如在Visual Studio中的完成方式,您可以抓住解决方案资源管理器,比如说将其拖放到某个位置,但是我该怎么做呢?
答案 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库,它是开源的,因此,如果它提供的功能无法满足您的要求,您可以了解他们如何实现它。