C# 在WPF中进行拖放时,如何保持UIELement的形状
我有两个C# 在WPF中进行拖放时,如何保持UIELement的形状,c#,wpf,drag-and-drop,uielement,C#,Wpf,Drag And Drop,Uielement,我有两个StackPanels-一个包含一个椭圆,另一个不包含任何内容 我想将椭圆从一个堆栈面板拖动到另一个堆栈面板。实际的拖放操作已经完成,工作正常,但是我想知道如何将椭圆形状保持在鼠标光标的顶端 即使是一个Windows窗体示例也不错,我也可以对其进行调整。您希望在拖动过程中添加拖动装饰器。我已经看到了一些不同的方法,但快速搜索可以找到,它的模式和我看到的一样好。具有代表性的样本是: void itemsControl_PreviewDragEnter(object sender,
StackPanel
s-一个包含一个椭圆
,另一个不包含任何内容
我想将椭圆
从一个堆栈面板拖动到另一个堆栈面板。实际的拖放操作已经完成,工作正常,但是我想知道如何将椭圆
形状保持在鼠标光标的顶端
即使是一个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获得正确的指挥权是相当棘手的,但这是值得的,IMHO