zoukankan      html  css  js  c++  java
  • Silverlight中按钮实现简单的拖放功能注意点

       <Canvas Background="#46461F">
            <Button
               MouseLeftButtonDown="OnMouseDown"
               MouseMove="OnMouseMove"
               MouseLeftButtonUp="OnMouseUp"
               Canvas.Left="50" Canvas.Top="50" Background="Red"
               FontSize="18"         
                ClickMode="Hover"
               Width="160" Height="80">
                <Button.Content>
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"
                                VerticalAlignment="Center">
                    
                        <TextBlock Text="拖动我" VerticalAlignment="Center" Margin="10"></TextBlock>
                    </StackPanel>
                </Button.Content>
            </Button>
        </Canvas>

    红色为注意点,否则按钮触发不了MouseLeftButtonDown与MouseLeftButtonUp

     

     

     

     以下为事件 

      bool trackingMouseMove = false;
            Point mousePosition;

            void OnMouseDown(object sender, MouseButtonEventArgs e)
            {
                FrameworkElement element = sender as FrameworkElement;
                mousePosition = e.GetPosition(null);
                trackingMouseMove = true;
                if (null != element)
                {
                    element.CaptureMouse();
                    element.Cursor = Cursors.Hand;
                }
            }

            void OnMouseMove(object sender, MouseEventArgs e)
            {
                FrameworkElement element = sender as FrameworkElement;
                if (trackingMouseMove)
                {
                    double deltaV = e.GetPosition(null).Y - mousePosition.Y;
                    double deltaH = e.GetPosition(null).X - mousePosition.X;
                    double newTop = deltaV + (double)element.GetValue(Canvas.TopProperty);
                    double newLeft = deltaH + (double)element.GetValue(Canvas.LeftProperty);

                    element.SetValue(Canvas.TopProperty, newTop);
                    element.SetValue(Canvas.LeftProperty, newLeft);

                    mousePosition = e.GetPosition(null);
                }
            }

            void OnMouseUp(object sender, MouseButtonEventArgs e)
            {
                FrameworkElement element = sender as FrameworkElement;
                trackingMouseMove = false;
                element.ReleaseMouseCapture();

                mousePosition.X = mousePosition.Y = 0;
                element.Cursor = null;
            }

     

  • 相关阅读:
    Git-Runoob:Git 查看提交历史
    Git-Runoob:Git 分支管理
    Git-Runoob:Git 基本操作
    Git-Runoob:Git 创建仓库
    weblogic11g 安装集群 —— win2003 系统、单台主机
    关于条件宏的易错点
    关于端口号你知道多少!
    POJ 2114 Boatherds【Tree,点分治】
    Android应用开发学习笔记之Intent
    对于接收到的GPS信息详解
  • 原文地址:https://www.cnblogs.com/lbg280/p/1639249.html
Copyright © 2011-2022 走看看