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);
}