Как разрешить пользователю перетаскивать элементы управления WPF в любое место на странице? - PullRequest
11 голосов
/ 04 февраля 2009

Теперь, когда я могу создавать полезные пользовательские элементы управления в WPF (благодаря этот ответ стекопотока ), я хочу иметь возможность размещать многочисленные пользовательские элементы управления на одной странице в двух столбцах и предоставлять пользователю возможность перемещайте их в соответствии с предпочтениями, перетаскивая те, которые они используют чаще всего, наверх и т. д.

Может кто-нибудь указать мне код, учебники и т. Д., Которые делают это? Я могу себе представить, что это было довольно легко сделать в WPF.

Ответы [ 7 ]

4 голосов
/ 04 февраля 2009

Здесь - это запись блога, с которой можно начать работу с функцией перетаскивания в WPF.

Развлекайся.

1 голос
/ 04 февраля 2009

Серия блогов постов , в которых рассматривается перетаскивание с использованием прикрепленных свойств.

1 голос
/ 04 февраля 2009

Там также Как я могу перетаскивать элементы между привязанными данными ItemsControls? от Bea Stollnitz.

В статье рассказывается о повторно используемом наборе украшений, которые позволяют перетаскивать элементы управления между элементами управления.

Это несколько продвинутый, но очень полезный.

0 голосов
/ 04 февраля 2012

Исправление:

private void Control_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
        isDragging = true;
        var draggableControl = sender as UserControl;
        clickPosition = e.GetPosition(this.Parent as UIElement);
        var transform = RenderTransform as TranslateTransform;
        if (transform != null) {
            clickPosition.X -= transform.X;
            clickPosition.Y -= transform.Y;
        }
        draggableControl.CaptureMouse();
}
0 голосов
/ 18 ноября 2011

Для дальнейшего использования в кодпроекте есть отличная библиотека с DragCanvas, которая позволяет перетаскивать любые элементы управления, размещенные на нем:

http://www.codeproject.com/KB/WPF/WPFJoshSmith.aspx

Он также содержит CenteredContentControl, если вы хотите сделать «вложения» между элементами управления.

0 голосов
/ 30 декабря 2009

Я также искал простой способ сделать это и наткнулся на следующую веб-страницу: http://dotnetslackers.com/ADO_NET/re-191632_Generic_WPF_Drag_and_Drop_Adorner.aspx Похоже, что есть некоторые приятные особенности этой реализации.

0 голосов
/ 04 февраля 2009

Я знаю, что это не совсем то, что вам нужно, но это может вас сблизить !!!

У Мартина Грейсона есть проект на Codeplex, который называется Blacklight ... Проверьте панель перетаскивания !!!

...