Silverlight事件之鼠标拖动(二)

来源:互联网 发布:2015网络广告费用 编辑:程序博客网 时间:2024/05/23 18:46

Silverlight中实现鼠标拖动效果

XAML代码:

<Grid x:Name="LayoutRoot" Background="White">
<Canvas 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"/>
<TextBlock x:Name="tbkpos" FontSize="26"/>
</Canvas>
</Grid>
</UserControl>


后台代码:

        private void Ellipse_MouseMove(object sender, MouseEventArgs e)
        {
            FrameworkElement element = sender as FrameworkElement;
            if (isMouseMoving)
            {
                double currX = e.GetPosition(null).X - currentPostion.X;
                double currY = e.GetPosition(null).Y - currentPostion.Y;
                element.SetValue(Canvas.TopProperty,currY+(double)element.GetValue(Canvas.TopProperty));
                element.SetValue(Canvas.LeftProperty,currX+(double)element.GetValue(Canvas.LeftProperty));
                tbkpos.Text = "Ellipse当前坐标:"+currentPostion.X.ToString()+","+currentPostion.Y.ToString();
                currentPostion = e.GetPosition(null);
            }
        }
        //鼠标左键按下
        private void Ellipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            FrameworkElement element = sender as FrameworkElement;
            currentPostion = e.GetPosition(null);
            isMouseMoving = true;
            if (element != null)
            {
                //将鼠标设置为UIElement,开始捕捉鼠标位置
                element.CaptureMouse();
                element.Cursor = Cursors.Hand;
            }
        }
        private void Ellipse_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            FrameworkElement element = sender as FrameworkElement;
            isMouseMoving = false;
            element.ReleaseMouseCapture();//停止捕捉鼠标位置
            currentPostion.X = 0;
            currentPostion.Y = 0;
            element.Cursor = null;
        }
原创粉丝点击