在我的WPF桌面应用程序中,我有许多出现在网格上的UserControl示例。我想在屏幕上拖动任何控件的能力,如果我把它放到下面的另一个控件上,从拖动的对象到拖放目标发生数据传输。看起来应该很简单,但我很难让WPF同时做这两件事。
在this example中,为了在用户控件上启用拖放(DND),启动DND的代码位于对象本身中,数据传输正常,但对象永远不会在屏幕上移动。在这个other DND example中,包括在屏幕上移动对象,移动对象的DND代码都发生在窗口中。所有的东西都可以很好的拖动,但是在拖动的对象之间没有数据传输。
有没有人知道一个管理两个目标的例子--在屏幕上拖动一个UserControl(或一个Adorner),并将数据从拖动的对象传输到下面的另一个对象?
1条答案
按热度按时间iih3973s1#
在第二个例子中,使用装饰器来直观地指示对象正在被拖动,您可以在
DragStarted()
方法中创建一个DataObject
,将其存储在某个地方(例如在类变量中),然后在DragFinished
方法中从该存储中检索它,例如:不同之处在于,您不调用
DragDrop.DoDragDrop
,也不处理Drop
事件和来自DragEventArgs
的数据。数据本身可能完全相同,但您基本上将其存储在另一个位置。