Aquí hay un código simplificado para arrastrar la forma de WPF alrededor de su pantalla. Es posible que haya visto algo de este código en diferentes publicaciones, simplemente lo modifiqué para adaptarlo a las necesidades de arrastrar el formulario WPF.
Tenga en cuenta que tenemos que tomar la posición de formulario en MouseLeftButtonDown, para que podamos mantener el puntero del mouse (ratón) colocado en el mismo lugar en el formulario mientras lo estamos arrastrando por la pantalla.
También tendrá que añadir la siguiente referencia para obtener la posición del ratón respecto a la pantalla: System.Windows.Forms
propiedades necesarias:
private bool _IsDragInProgress { get; set; }
private System.Windows.Point _FormMousePosition {get;set;}
Código:
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
this._IsDragInProgress = true;
this.CaptureMouse();
this._FormMousePosition = e.GetPosition((UIElement)this);
base.OnMouseLeftButtonDown(e);
}
protected override void OnMouseMove(MouseEventArgs e)
{
if (!this._IsDragInProgress)
return;
System.Drawing.Point screenPos = (System.Drawing.Point)System.Windows.Forms.Cursor.Position;
double top = (double)screenPos.Y - (double)this._FormMousePosition.Y;
double left = (double)screenPos.X - (double)this._FormMousePosition.X;
this.SetValue(MainWindow.TopProperty, top);
this.SetValue(MainWindow.LeftProperty, left);
base.OnMouseMove(e);
}
protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
{
this._IsDragInProgress = false;
this.ReleaseMouseCapture();
base.OnMouseLeftButtonUp(e);
}
Muchas gracias, solo estaba buscando 2 días para una respuesta :) –