Как сделать Popup подвижным в C# WPF более одного раза?C#

Место общения программистов C#
Anonymous
Как сделать Popup подвижным в C# WPF более одного раза?

Сообщение Anonymous »

Я создал пользовательский элемент управления, который использует и я создал одноэлементный класс, который обновляется только при изменении параметра:

Код: Выделить всё

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

Вернуться в «C#»