C# 对象在使用DragDelta事件拖动后重复

C# 对象在使用DragDelta事件拖动后重复,c#,wpf,C#,Wpf,当我拖动一个新创建的对象时,奇怪的事情发生了:它被复制了。当我拖动复制的对象或复制后的初始对象时,它可以正常拖动。我怎样才能避免它,为什么会发生 详情: 1元素(从Thumb派生的类的实例)按如下编程方式创建: someClass new_instance = new someClass(); new_instance.Template=template; // template is of ControlTemplate type new_instance.DragDelta += onDra

当我拖动一个新创建的对象时,奇怪的事情发生了:它被复制了。当我拖动复制的对象或复制后的初始对象时,它可以正常拖动。我怎样才能避免它,为什么会发生

详情: 1元素(从Thumb派生的类的实例)按如下编程方式创建:

someClass new_instance = new someClass();
new_instance.Template=template; // template is of ControlTemplate type
new_instance.DragDelta += onDragDelta;
Board.Children.Add(new_instance); // Board is of Canvas type
// code to place it on Canvas
private void onDragDelta(object sender, DragDeltaEventArgs e)
{
    var thumb = e.Source as someClass;
    double left = Canvas.GetLeft(thumb) + e.HorizontalChange;
    double top = Canvas.GetLeft(thumb) + e.HorizontalChange;
    Canvas.SetLeft(thumb,left);
    Canvas.SetTop(thumb,top);
}    
onDragDelta的功能实现如下:

someClass new_instance = new someClass();
new_instance.Template=template; // template is of ControlTemplate type
new_instance.DragDelta += onDragDelta;
Board.Children.Add(new_instance); // Board is of Canvas type
// code to place it on Canvas
private void onDragDelta(object sender, DragDeltaEventArgs e)
{
    var thumb = e.Source as someClass;
    double left = Canvas.GetLeft(thumb) + e.HorizontalChange;
    double top = Canvas.GetLeft(thumb) + e.HorizontalChange;
    Canvas.SetLeft(thumb,left);
    Canvas.SetTop(thumb,top);
}    

是否可以从提供的信息中得出一些结论或给出一些提示?

根据您的描述,很可能在您拖动上面的元素之前,已创建了两个元素并将其放置在同一位置。在拖动新创建的对象时,您怎么知道它是重复的?没错,它创建了两次并放置在同一位置!因此,DragDelta工作正常。谢谢,你解决了我的问题!