1

我有 2 StackPanels - 一个包含一个Ellipse,另一个不包含任何内容。

我想Ellipse从一个堆栈面板拖动到另一个。实际的拖放操作已经完成并且工作正常,但是我想知道如何将该Ellipse形状保持在鼠标光标的尖端。

即使是 Windows 窗体示例也会很好,我将能够对其进行调整。

4

1 回答 1

0

您想在拖动过程中添加拖动装饰器。我已经看到这有几种不同的方法,但是快速搜索会导致这种行为,它的模式与我所看到的一样好。一个有代表性的样本是:

    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 获得正确的指挥权可能非常棘手,但这是值得的,恕我直言。

于 2010-03-22T16:28:43.497 回答