实现拖放类似
本文关键字:拖放 实现 | 更新日期: 2023-09-27 17:57:14
[情况]
我有一个自定义的用户控件(基本上是一个下面有一些文本的 iamge)。在我的程序中,我添加了其中两个并通过以下方式实现一个拖动方法
public partial class CustomItem : UserControl
{
private bool IsDragging { get; set; }
private Point clickPosition;
public CustomItem()
{
InitializeComponent();
this.DataContext = this;
this.MouseLeftButtonDown += (s, ea) =>
{
clickPosition = ea.GetPosition(this.LayoutRoot);
this.CaptureMouse();
IsDragging = true;
};
this.MouseMove += (s, ea) =>
{
if (IsDragging)
{
this.transFormThisShit.X = ea.GetPosition(this).X - clickPosition.X;
this.transFormThisShit.Y = ea.GetPosition(this).Y - clickPosition.Y;
}
};
this.MouseLeftButtonUp += (s, ea) =>
{
this.ReleaseMouseCapture();
IsDragging = false;
};
}
}
[问题]
我可以在屏幕上自由移动对象,这正是我想要的。但是当我将这些控件中的 2 个放在彼此之上时,我希望发生一个事件。什么都没有,但不知何故,我似乎无法阅读我放下的控件的任何内容。
有没有可能的方法可以在上面给定的代码中实现这一点,以便当我将此控件的 2 个放在彼此之上时,我可以捕获一个/某个事件,我可以同时获得两个控件?
希望你能理解我的问题。
[编辑]
如果在当前上下文中不可能,请提示一种我可以使用自定义控件的方法。
也许有一些类似拖放控件的东西,我可以"编辑"到与此控件相同的控件中!
在 MouseLeftButtonUp 事件中,可以使用检查控件已拖动到的坐标,并将这些坐标与要放到的控件进行比较。 我看不到任何其他明显的方法来做到这一点。
有拖放框架,例如对列表框中的项目进行重新排序,因此,如果您发现您正在实现一些非常标准的东西,则不需要重新发明轮子。