我有 2 StackPanel
s - 一个包含一个Ellipse
,另一个不包含任何内容。
我想Ellipse
从一个堆栈面板拖动到另一个。实际的拖放操作已经完成并且工作正常,但是我想知道如何将该Ellipse
形状保持在鼠标光标的尖端。
即使是 Windows 窗体示例也会很好,我将能够对其进行调整。
我有 2 StackPanel
s - 一个包含一个Ellipse
,另一个不包含任何内容。
我想Ellipse
从一个堆栈面板拖动到另一个。实际的拖放操作已经完成并且工作正常,但是我想知道如何将该Ellipse
形状保持在鼠标光标的尖端。
即使是 Windows 窗体示例也会很好,我将能够对其进行调整。
您想在拖动过程中添加拖动装饰器。我已经看到这有几种不同的方法,但是快速搜索会导致这种行为,它的模式与我所看到的一样好。一个有代表性的样本是:
void itemsControl_PreviewDragEnter(object sender, DragEventArgs e)
{
ItemsControl itemsControl = (ItemsControl)sender;
if (e.Data.GetDataPresent(ItemType))
{
object data = e.Data.GetData(ItemType);
InitializeDragAdorner(itemsControl, data, e.GetPosition(itemsControl));
InitializeInsertAdorner(itemsControl, e);
}
e.Handled = true;
}
DragAdorner
他们在课堂上很好地总结了拖动装饰的所有演示。(实际上,我希望我以这种方式完成我的工作)
我还看到了用最初拖动元素的视觉画笔构建装饰的技巧,但我认为到目前为止我最喜欢这种方法。
顺便说一句:经过几次不同的处理后,我强烈建议您将拖放代码包装成一种行为。否则你会到处乱扔垃圾。使用 MVVM 获得正确的指挥权可能非常棘手,但这是值得的,恕我直言。