1.前台

 

<UserControl x:Class="SilverlightApplication4.MainPage"
    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"
    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
    <Canvas x:Name="ParentCanvas" Background="AliceBlue">
        <Ellipse MouseMove="Ellipse_MouseMove"
                MouseLeftButtonDown="Ellipse_MouseLeftButtonDown"
                MouseLeftButtonUp="Ellipse_MouseLeftButtonUp"
                Canvas.Left="50" Canvas.Top="50" Width="120" Height="120" Fill="Gold" Stroke="Black" StrokeThickness="3"></Ellipse>
       <TextBlock x:Name="tbkpos" FontSize="26"></TextBlock>

    </Canvas>
</UserControl>
  

 2.后台

 

public partial class MainPage : UserControl
    {
        Point curpos;
        bool mouseMoving = false;
        public MainPage()
        {
            InitializeComponent();
         
           
        }

        private void Ellipse_MouseMove(object sender, MouseEventArgs e)
        {
            FrameworkElement element = sender as FrameworkElement;
            if (mouseMoving)
            {
                //获取当前坐标
                double currx = e.GetPosition(null).X -curpos.X;
                double curry = e.GetPosition(null).Y - curpos.Y;

                //设置对象坐标
                element.SetValue(Canvas.TopProperty, curry + (double)element.GetValue(Canvas.TopProperty));
                element.SetValue(Canvas.LeftProperty, currx + (double)element.GetValue(Canvas.LeftProperty));

                //输出当前坐标
                tbkpos.Text = "当前坐标" + curpos.X.ToString() + "," + curpos.Y.ToString();
               //保存当前坐标值
                curpos = e.GetPosition(null);
          }

        }

        private void Ellipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            FrameworkElement element = sender as FrameworkElement;
            curpos = e.GetPosition(null);
            //设置开始拖动变量值
            mouseMoving = true;
            if (null != element)
            {
                //捕捉鼠标位置
                element.CaptureMouse();
                //设置鼠标手形
                element.Cursor = Cursors.Hand;
            }


        }

        private void Ellipse_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            FrameworkElement element = sender as FrameworkElement;
           
            //放开后修改鼠标变量值
            mouseMoving = false;

            //停止捕捉鼠标位置
            element.ReleaseMouseCapture();

            //设置当前X,Y为0
            curpos.X = 0;
            curpos.Y = 0;

            //恢复鼠标样式
            element.Cursor = null;
        }

     
    }