/// <summary> /// The mouse move. /// </summary> /// <param name="sender"> /// The sender. /// </param> /// <param name="e"> /// The e. /// </param> private void MouseMove(object sender, MouseEventArgs e) { if (!this.mouseCaptured) { return; } var frameworkElement = this.adorner as FrameworkElement; if (frameworkElement == null) { return; } double deltaY = e.GetPosition(null).Y - this.mouseY; double deltaX = e.GetPosition(null).X - this.mouseX; var offset = new Point(this.adorner.Offset.X + deltaX, this.adorner.Offset.Y + deltaY); // constrain the popup to the bounds of the window if (this.adorner.ChildPosition.Y + offset.Y < 0) { offset.Y = -this.adorner.ChildPosition.Y; } if (this.adorner.ChildPosition.X + offset.X < 0) { offset.X = -this.adorner.ChildPosition.X; } Size boundariesSize = ScreenUtils.GetWindowSize(); var adornedElement = this.adorner.AdornedElement as FrameworkElement; if (adornedElement != null) { boundariesSize = new Size(adornedElement.ActualWidth, adornedElement.ActualHeight); } double maxY = boundariesSize.Height - frameworkElement.ActualHeight; if (this.adorner.ChildPosition.Y + offset.Y > maxY) { offset.Y = maxY - this.adorner.ChildPosition.Y; } double maxX = boundariesSize.Width - frameworkElement.ActualWidth; if (this.adorner.ChildPosition.X + offset.X > maxX) { offset.X = maxX - this.adorner.ChildPosition.X; } this.adorner.Offset = offset; this.mouseY = e.GetPosition(null).Y; this.mouseX = e.GetPosition(null).X; }
/// <summary> /// The mouse move. /// </summary> /// <param name="sender"> /// The sender. /// </param> /// <param name="e"> /// The e. /// </param> private void MouseMove(object sender, MouseEventArgs e) { if (!this.mouseCaptured) { return; } var frameworkElement = this.popup.Child as FrameworkElement; if (frameworkElement == null) { return; } double deltaY = e.GetPosition(null).Y - this.mouseY; double deltaX = e.GetPosition(null).X - this.mouseX; this.popup.VerticalOffset += deltaY; this.popup.HorizontalOffset += deltaX; // constrain the popup to the bounds of the silverlight window if (this.popup.VerticalOffset < 0) { this.popup.VerticalOffset = 0; } if (this.popup.HorizontalOffset < 0) { this.popup.HorizontalOffset = 0; } Size windowSize = ScreenUtils.GetWindowSize(); double maxY = windowSize.Height - frameworkElement.ActualHeight; if (this.popup.VerticalOffset > maxY) { this.popup.VerticalOffset = maxY; } double maxX = windowSize.Width - frameworkElement.ActualWidth; if (this.popup.HorizontalOffset > maxX) { this.popup.HorizontalOffset = maxX; } this.mouseY = e.GetPosition(null).Y; this.mouseX = e.GetPosition(null).X; }