基本思路很简单:
先得到鼠标点击的位置并记录,鼠标移动时得到移动后的位置计算出差值,然后平移。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51  | using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;  using System.Windows;  using System.Windows.Controls;  using System.Windows.Data;  using System.Windows.Documents;  using System.Windows.Input;  using System.Windows.Media;  using System.Windows.Media.Imaging;  using System.Windows.Navigation;  using System.Windows.Shapes;  namespace DragWindowTest  {      /// <summary>      /// MainWindow.xaml 的交互逻辑      /// </summary>      public partial class MainWindow : Window      {          public MainWindow()          {              InitializeComponent();          }          private static bool IsDrag = false;          private double enterX;          private double enterY;          private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)          {              IsDrag = true;              enterX = e.GetPosition(this).X;              enterY = e.GetPosition(this).Y;          }              private void Window_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)          {              IsDrag = false;              enterX = 0;              enterY = 0;          }          private void Window_MouseMove(object sender, MouseEventArgs e)          {              if (IsDrag)              {                  this.Left += e.GetPosition(this).X - enterX;                  this.Top += e.GetPosition(this).Y - enterY;              }          }           }  } |