Код: Выделить всё
Код: Выделить всё
public class PopUpMovement
{
private PopUpMovement() { }
private static PopUpMovement _instance;
private static readonly object _instanceLock = new object();
public static PopUpMovement Instance()
{
if (_instance == null)
{
lock (_instanceLock)
{
if (_instance == null)
{
_instance = new PopUpMovement();
}
}
}
return _instance;
}
public bool draggingPopup { get; set; }
public bool CustomTablePopupClicked { get; set; }
}
Код: Выделить всё
private Point startPoint;
private double initialHorizontalOffset;
private double initialVerticalOffset;
private Point initialMousePosition;
private Point startDragPoint;
//private bool CustomTablePopupClicked;
private void UserControl_MouseMove(object sender, MouseEventArgs e)
{
if (PopUpMovement.Instance().draggingPopup)
{
else if (PopUpMovement.Instance().CustomTablePopupClicked)
{
Point currentMousePosition = e.GetPosition(this); // Get the mouse position relative to the UserControl
double offsetX = currentMousePosition.X - initialMousePosition.X;
double offsetY = currentMousePosition.Y - initialMousePosition.Y;
CustomTablePopup.HorizontalOffset += offsetX;
CustomTablePopup.VerticalOffset += offsetY;
initialMousePosition = currentMousePosition; // Update initial position
}
}
}
private void UserControl_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if(PopUpMovement.Instance().draggingPopup == true)
{
PopUpMovement.Instance().draggingPopup = false;
PopUpMovement.Instance().CustomTablePopupClicked = false;
Mouse.Capture(null);
}
}
private void CustomTablePopup_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
// Store the mouse position
//draggingPopup = true;
//PopUpMovement popUpMovement = PopUpMovement.Instance();
//popUpMovement.draggingPopup = true;
PopUpMovement.Instance().draggingPopup = true;
initialMousePosition = e.GetPosition(this); // Get the mouse position relative to the Window
Mouse.Capture(this); // Capture mouse at the UserControl level
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... -than-once