I created a movable UserControl
Good morning. I slept and can think )))
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);
this.RenderTransform = transform;
anchorPoint = currentPoint;
}
}
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
I really am not sure what exactly you're trying to accomplish in your question but Thumbs are much easier for dragging motions. You can see an explanation and sample code (at the bottom) here.