Как заставить перетаскивание работать правильно в silverlight, когда мышь не нажата? - PullRequest
0 голосов
/ 14 апреля 2010

У меня есть следующий код

  • XAML

    <Canvas x:Name="LayoutRoot" >
        <Rectangle Canvas.Left="40" Canvas.Top="40" Width="20" Height="20" Name="rec" Fill="Red" MouseLeftButtonDown="rec_MouseLeftButtonDown"   MouseMove="rec_MouseMove" />
    </Canvas>
    

  • код позади

открытый частичный класс MainPage: UserControl { public MainPage () { InitializeComponent (); }

        public Point LastDragPosition { get; set; }
        private bool isDragging;

        private void rec_MouseMove(object sender, MouseEventArgs e)
        {
            if(!isDragging)
            {
                return;
            }

            var position = e.GetPosition(rec as UIElement);

            var newPosition = new Point(
                Canvas.GetLeft(rec) + position.X - LastDragPosition.X,
                Canvas.GetTop(rec) + position.Y - LastDragPosition.Y);

            Canvas.SetLeft(rec, newPosition.X);
            Canvas.SetTop(rec, newPosition.Y);

            LastDragPosition = e.GetPosition(rec as UIElement);
        }

        private void rec_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            isDragging = true;
            LastDragPosition = e.GetPosition(sender as UIElement);
            rec.CaptureMouse();
        }
    }

Эта проблема заключается в том, что прямоугольник следует за мышью, если левая кнопка мыши нажата, но я бы хотел, чтобы прямоугольник двигался, даже если левая кнопка мыши не нажата. Это работает, но если вы двигаете мышь очень медленно. Если быстро переместить мышь, прямоугольник перестает двигаться (захват мыши потерян?)

Приветствия

1 Ответ

0 голосов
/ 14 апреля 2010

Похоже, это невозможно сделать. Согласно документам CaptureMouse, левая кнопка должна быть нажата. «Левая кнопка мыши находится в нажатом (нижнем) состоянии.»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...