Как разрешить пользователю перетаскивать/удалять элементы управления WPF в любом месте страницы?

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

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

Ответ 2

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

Получайте удовольствие.

Ответ 3

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

Ответ 4

Я знаю, что это не совсем то, что вам нужно, но оно может вас закрыть!

Мартин Грейсон имеет проект на Codeplex, называемый Blacklight... Проверьте панель "Перетащить панель".

Ответ 6

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

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

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

Ответ 7

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

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