I created a movable UserControl
<UserControl x:Class="Restaurant.Views.Managerer.TablePanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Restaurant.Helpers.Converter"
mc:Ignorable="d"
x:Name="root"
MouseLeftButtonDown="root_MouseLeftButtonDown"
MouseLeftButtonUp="root_MouseLeftButtonUp"
MouseMove="root_MouseMove"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
....
Point anchorPoint;
Point currentPoint;
bool isInDrag = false;
private void root_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var element = sender as FrameworkElement;
anchorPoint = e.GetPosition(null);
element.CaptureMouse();
isInDrag = true;
e.Handled = true;
}
private void root_MouseMove(object sender, MouseEventArgs e)
{
if (isInDrag)
{
var element = sender as FrameworkElement;
currentPoint = e.GetPosition(null);
var transform = new TranslateTransform
{
X = (currentPoint.X - anchorPoint.X),
Y = (currentPoint.Y - anchorPoint.Y)
};
this.RenderTransform = transform;
anchorPoint = currentPoint;
}
}
private void root_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (isInDrag)
{
var element = sender as FrameworkElement;
element.ReleaseMouseCapture();
isInDrag = false;
e.Handled = true;
}
}
If I change the code from
X = (currentPoint.X - anchorPoint.X),
Y = (currentPoint.Y - anchorPoint.Y)
to
X = (currentPoint.X),
Y = (currentPoint.Y)
I can move the UserControl
, but the mouse and UserControl
do not match
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;
}
}
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With