private void UpdateCursor(WindowResizeGripDirection direction) { switch (direction) { case WindowResizeGripDirection.None: this.Cursor = Cursors.Arrow; break; case WindowResizeGripDirection.Left: case WindowResizeGripDirection.Right: this.Cursor = Cursors.SizeWE; break; case WindowResizeGripDirection.Top: case WindowResizeGripDirection.Bottom: this.Cursor = Cursors.SizeNS; break; case WindowResizeGripDirection.TopLeft: case WindowResizeGripDirection.BottomRight: this.Cursor = Cursors.SizeNWSE; break; case WindowResizeGripDirection.TopRight: case WindowResizeGripDirection.BottomLeft: this.Cursor = Cursors.SizeNESW; break; } }
private void BeginResize(WindowResizeGripDirection direction) { HwndSource hwndSource = (HwndSource)PresentationSource.FromVisual((Visual)this); if (hwndSource == null) { return; } NativeMethods.SendMessage(hwndSource.Handle, 274, (IntPtr)((int)(61440 + direction)), IntPtr.Zero); }
protected override void OnMouseDown(MouseButtonEventArgs e) { base.OnMouseDown(e); WindowResizeGripDirection direction = this.HitTest(e.GetPosition((IInputElement)this)); if (direction == WindowResizeGripDirection.None) { return; } this.BeginResize(direction); }