Не получается двигать обьект wpf
Я пытаюсь создать user control, который можно передвигать мышкой. Код, отвечающий за перемещение работал до его установки в user control. Я подозреваю, что ошибка в канвасе. Есть какие-то идеи?
/// <summary>
/// Логика взаимодействия для VertexUserControl.xaml
/// </summary>
public partial class VertexUserControl : UserControl
{
Vector relativeMousePos;
FrameworkElement draggedObject;
Canvas DragArena;
public VertexUserControl(Canvas canv, string name)
{
InitializeComponent();
DragArena = canv;
this.Name = name;
}
public VertexUserControl()
{
InitializeComponent();
}
void StartDrag(object sender, MouseButtonEventArgs e)
{
draggedObject = (FrameworkElement)sender;
relativeMousePos = e.GetPosition(draggedObject) - new Point();
draggedObject.MouseMove += OnDragMove;
draggedObject.LostMouseCapture += OnLostCapture;
draggedObject.MouseUp += OnMouseUp;
Mouse.Capture(draggedObject);
}
void OnDragMove(object sender, MouseEventArgs e)
{
UpdatePosition(e);
}
void UpdatePosition(MouseEventArgs e)
{
var point = e.GetPosition(DragArena);
var newPos = point - relativeMousePos;
Canvas.SetLeft(draggedObject, newPos.X);
Canvas.SetTop(draggedObject, newPos.Y);
}
void OnMouseUp(object sender, MouseButtonEventArgs e)
{
FinishDrag(sender, e);
Mouse.Capture(null);
}
void OnLostCapture(object sender, MouseEventArgs e)
{
FinishDrag(sender, e);
}
void FinishDrag(object sender, MouseEventArgs e)
{
draggedObject.MouseMove -= OnDragMove;
draggedObject.LostMouseCapture -= OnLostCapture;
draggedObject.MouseUp -= OnMouseUp;
UpdatePosition(e);
}
}