Ecco il codice semplificato per trascinare il modulo WPF intorno al vostro schermo. Potresti aver visto parte di questo codice su diversi post, l'ho appena modificato per adattarlo alle esigenze di trascinamento del modulo WPF.
Ricordare che è necessario prendere la posizione del modulo su MouseLeftButtonDown, in modo da mantenere il puntatore del mouse posizionato nello stesso punto del modulo mentre lo si trascina sullo schermo.
Sarà inoltre necessario aggiungere il seguente riferimento per ottenere la posizione del mouse rispetto allo schermo: System.Windows.Forms
proprietà necessarie:
private bool _IsDragInProgress { get; set; }
private System.Windows.Point _FormMousePosition {get;set;}
Codice:
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);
}
Grazie mille, stavo solo guardando 2 giorni per una tale risposta :) –