Witam, mam problem z przesuwaniem buttona, a mianowicie polega to na tym że za pomocą myszki i za kursorem podąża button, następnie w momencie puszczenia lewego przycisku myszy ma on jak by dopasować się do poprawnej pozycji. Niestety w momencie puszczenia lewego przycisku kontrolka nie poprawia swojej pozycji tylko wraca do poprzedniej pozycji a gdy na nią nakieruję ta nagle zmienia pozycję na inna i w ten sposób jak by ucieka.

        private void Button_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
                if (_buttonPosition == null && selectedButton = null)
               {
                _buttonPosition = this.TransformToAncestor(MainWindow.mainWindow.GridMain).Transform(new System.Windows.Point(0, 0));
                selectedButton = (sender as Button);
               }

                var mousePosition = Mouse.GetPosition(MainWindow.mainWindow.GridMain);
                deltaX = mousePosition.X - _buttonPosition.Value.X;
                deltaY = mousePosition.Y - _buttonPosition.Value.Y;
                _isMoving = true;
       }

        private void Button_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            _isMoving = false;

            System.Windows.Point relativePoint = this.TransformToAncestor(MainWindow.mainWindow.GridMain).Transform(new System.Windows.Point(0, 0));

            selectedButton.RenderTransform = new TranslateTransform(Math.Floor(relativePoint.X / 2), Math.Floor(relativePoint.Y / 45));
        }

        private void Button_MouseMove(object sender, MouseEventArgs e)
        {
            if (!_isMoving) return;

            var mousePoint = Mouse.GetPosition(MainWindow.mainWindow.GridMain);

            var offsetX = (_currentTT == null ? _buttonPosition.Value.X : _buttonPosition.Value.X - _currentTT.X) + deltaX - mousePoint.X;
            var offsetY = (_currentTT == null ? _buttonPosition.Value.Y : _buttonPosition.Value.Y - _currentTT.Y) + deltaY - mousePoint.Y;

            selectedButton.RenderTransform = new TranslateTransform(-offsetX, -offsetY);
        }