Drag.xaml
<Canvas>
<Grid Width="300" Height="60" Background="GreenYellow" MouseMove="Grid_MouseMove" MouseLeftButtonDown="Grid_MouseLeftButtonDown" MouseLeftButtonUp="Grid_MouseLeftButtonUp">
</Grid>
</Canvas>
Drag.xaml.cs
Point currentPoint;
bool mouseMoving = false;
private void Grid_MouseMove(object sender, MouseEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
if (mouseMoving)
{
double cX = e.GetPosition(null).X - currentPoint.X;
double cY = e.GetPosition(null).Y - currentPoint.Y;
element.SetValue(Canvas.TopProperty, cY + (double)element.GetValue(Canvas.TopProperty));
element.SetValue(Canvas.LeftProperty, cX + (double)element.GetValue(Canvas.LeftProperty));
currentPoint = e.GetPosition(null);
}
}
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
currentPoint = e.GetPosition(null);
mouseMoving = true;
if (element != null)
{
<Canvas>
<Grid Width="300" Height="60" Background="GreenYellow" MouseMove="Grid_MouseMove" MouseLeftButtonDown="Grid_MouseLeftButtonDown" MouseLeftButtonUp="Grid_MouseLeftButtonUp">
</Grid>
</Canvas>
Drag.xaml.cs
Point currentPoint;
bool mouseMoving = false;
private void Grid_MouseMove(object sender, MouseEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
if (mouseMoving)
{
double cX = e.GetPosition(null).X - currentPoint.X;
double cY = e.GetPosition(null).Y - currentPoint.Y;
element.SetValue(Canvas.TopProperty, cY + (double)element.GetValue(Canvas.TopProperty));
element.SetValue(Canvas.LeftProperty, cX + (double)element.GetValue(Canvas.LeftProperty));
currentPoint = e.GetPosition(null);
}
}
private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
FrameworkElement element = sender as FrameworkElement;
currentPoint = e.GetPosition(null);
mouseMoving = true;
if (element != null)
{