实现原理,根据鼠标的移动位置在MouseMove事件中更新LeftProperty和TopProperty属性
private void Canvas_MouseMove(object sender, MouseEventArgs e)
{
Point p = e.GetPosition(sender as FrameworkElement);//获取鼠标位置
myControl.SetValue(Canvas.LeftProperty, p.X);//设置x坐标
myControl.SetValue(Canvas.TopProperty, p.Y);//设置y坐标
myControl.Cursor = Cursors.None;//隐藏鼠标
}
要实现控件的拖放只需相应的附加MouseLeftButtonDown和MouseLeftButtonUp事件处理即可。