[现状]
我有一个自定义的userControl(基本上是一个带有一些文本的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个放在另一个上面时,我可以捕获一个/我可以获得两个控件的事件?
希望你理解我的问题。
[编辑]
如果在当前情况下不可能,请提示我可以使用自定义控件进行此操作..
也许有类似拖放控件的东西我可以“编辑”到与此控件相同的位置!
答案 0 :(得分:0)
在MouseLeftButtonUp事件中,您可以使用检查控件已被拖动到的坐标,并将它们与您想要放入的控件进行比较。我看不到任何其他明显的方法来做到这一点。
有一些拖放框架可以用来重新排序列表框中的项目,所以如果你发现你正在实现一些非常标准的东西,你就不需要重新发明轮子了。