如何使用户能够在页面上拖放WPF用户控件?

11

现在我已经能够在WPF中创建有用的用户控件(感谢这个stackoverflow回答),我想在一个页面上以两列的形式放置多个用户控件,并使用户能够根据自己的喜好移动它们,将他们最常使用的拖到顶部等等。

有人可以指点我如何实现这一功能吗?我想在WPF中做到这一点应该相当容易。


2
我可以想象在WPF中做这件事情已经变得非常容易了。是的,你必须要想象一下。 :) - Beska
AvalonDock似乎是当今最受欢迎的用户可拖动停靠解决方案。它是第二个最受欢迎的WPF Nuget下载的一部分 - xceed的Extended.WPF.Toolkit。 - ToolmakerSteve
7个回答

4

这里是一篇关于WPF拖放功能入门的博客文章。

玩得开心!


1

1
一系列关于使用附加属性进行拖放的博客文章

0

0

我知道这不完全是你需要的,但它可能会让你接近!!!

Martin Grayson 在 Codeplex 上有一个名为 Blacklight 的项目... 试试拖动面板!!!


0

供日后参考,CodeProject 上有一个很棒的库,其中包含 DragCanvas,可以让您拖动放置在其上的任何控件:

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

如果您想在控件之间创建“附件”,它还包含一个CenteredContentControl。


0

更正:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接