Как прикрепить / отменить UserControl к окну границы в WPF? - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть окно с сеткой, которая имеет 2 столбца. Первый столбец содержит UserControl, а второй содержит основной макет приложения. UserControl имеет строку заголовка, которую пользователь должен иметь возможность свободно перемещать и перемещать элемент управления. Если пользователь хочет, он может перетащить пользовательский элемент управления назад к левой границе главного окна, и если элемент управления находится в пределах, скажем, 10 ipxels, он должен цепляться за границу, как магниты.

Пока у меня есть это для UserControl:

 private Point mousePosition;
    private TranslateTransform tt;

    private void titleBar_OnPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        if (e.LeftButton == MouseButtonState.Pressed)
        {
            mousePosition = e.GetPosition(null);


            if (tt.X < 10)
            {
               tt.X = 10;
            }

            if (tt.Y < 10)
            {
                tt.Y = 10;
            }
            this.RenderTransform = tt;

            var Grid = TreeHelper.FindParent<Grid>(this);
            Grid.ColumnDefinitions[0].Width = new GridLength(0);
            Grid.Children.Remove(this);
            this.Height = 1000;
            this.Width = 400;
        }
    }

    private void TitleBar_OnPreviewMouseMove(object sender, MouseEventArgs e)
    {
        if (e.LeftButton == MouseButtonState.Pressed)
        {
            tt.X +=  e.GetPosition(null).X - mousePosition.X;
            tt.Y += e.GetPosition(null).Y - mousePosition.Y;

            mousePosition = e.GetPosition(null);

            if (tt.X < 10)
            {
                tt.X = 0;
            }

            if (tt.Y < 10)
            {
                tt.Y = 0;
            }

            this.RenderTransform = tt;
        }
    }

Перетаскивание работало, так сказать, но удаление управления из сетки не работает. Я удаляю элемент управления из сетки, потому что когда элемент перетаскивается, я хочу, чтобы остальная часть макета занимала все окно.

Может ли кто-нибудь помочь мне с этим?

Спасибо.

PS Я не могу использовать сторонние пакеты и т. Д. c.

...