2010-03-22 55 views
1

我有2 StackPanel s - 一个包含Ellipse,另一个包含任何内容。如何在WPF中拖放时保持UIELement的形状

我想将Ellipse从一个堆栈面板拖到另一个。实际拖动&下降已经完成,工作正常,但我想知道如何保持在我的鼠标光标的顶端Ellipse形状。

即使Windows窗体的例子也不错,我可以适应它。

回答

0

您想在拖动过程中添加拖动装饰器。我已经看到这样做有几种不同的方式,但快速搜索导致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的指挥权可能非常棘手,但它是值得的,恕我直言。

+0

感谢您的帮助:) – Kamikaze 2010-03-23 18:22:55