Dragging a WPF user control

后端 未结 3 958
太阳男子
太阳男子 2021-01-05 12:08

I created a movable UserControl

    

        
3条回答
  •  不知归路
    2021-01-05 12:58

    Based upon information in @Mediator answer. I have came up and edited to prevent the control from going out of bounds.

    private TranslateTransform transform = new TranslateTransform();
        private void root_MouseMove(object sender, MouseEventArgs e)
        {
            if (isInDrag)
            {
                var element = sender as FrameworkElement;
                currentPoint = e.GetPosition(null);
    
                transform.X += currentPoint.X - anchorPoint.X;
                transform.Y += (currentPoint.Y - anchorPoint.Y);
                if (currentPoint.X < Application.Current.MainWindow.RenderSize.Width && currentPoint.Y < Application.Current.MainWindow.RenderSize.Height
                    && currentPoint.X > 0 && currentPoint.Y > 0 )
                {
                    this.RenderTransform = transform;
                    anchorPoint = currentPoint;
                }
                else
                {
                    transform = new TranslateTransform();
                    this.RenderTransform = transform;
                }
            }
        }
    

    But binding errors are their in output window in VS.

    It looks like this is an issue in WPF, but one that Microsoft won't fix.

    For more info here:

    https://connect.microsoft.com/VisualStudio/feedback/details/1423399/system-windows-data-error-4-when-using-relativesource-findancestor-inside-a-translatetransform-inside-a-style

提交回复
热议问题