【问题标题】:How do I keep the shape of an UIELement while doing a Drag and Drop in WPF如何在 WPF 中进行拖放时保持 UIELement 的形状
【发布时间】:2010-03-22 15:54:41
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# wpf drag-and-drop uielement


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-06-03
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 2023-02-21
      相关资源
      最近更新 更多