前端
<Canvas x:Name="cav1">
<Canvas x:Name="cav2" MouseLeftButtonDown="Border_MouseLeftButtonDown" MouseMove="Border_MouseMove" MouseLeftButtonUp="Border_MouseLeftButtonUp"/>
</Canvas>
后端
private void Border_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
isMove = true;
FrameworkElement currEle = sender as FrameworkElement;
pos = e.GetPosition(null);
currEle.CaptureMouse();
}
private void Border_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed && isMove)
{
FrameworkElement currEle = sender as FrameworkElement;
double xPos = e.GetPosition(null).X - pos.X + (double)currEle.GetValue(Canvas.LeftProperty);
double yPos = e.GetPosition(null).Y - pos.Y + (double)currEle.GetValue(Canvas.TopProperty);
currEle.SetValue(Canvas.LeftProperty, xPos);
currEle.SetValue(Canvas.TopProperty, yPos);
pos = e.GetPosition(null);
}
}
private void Border_MouseLeftButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
isMove = false;
FrameworkElement currEle = sender as FrameworkElement;
currEle.ReleaseMouseCapture();
}