以类似于iPhone上应用程序的方式在WPF中排列GUI元素

以类似于iPhone上应用程序的方式在WPF中排列GUI元素,iphone,wpf,drag-and-drop,Iphone,Wpf,Drag And Drop,我想以类似于iPhone上的应用程序的方式在WPF中安排uicontrol。它们应该定位在网格上,但用户应该能够将它们拖动到其他地方,在释放鼠标按钮(或iPhone的手指)后,所选的UIControl应该捕捉回网格中的下一个位置。其他UIElement应自动重新排列 此外,用户还应该用一条线或其他东西连接两个元素 我对WPF没有经验。第一个问题是,是否有一个容器适用于某个对象(System.Windows.Controls.Grid?),或者是否必须为此扩展画布或其他对象 我想知道可以使用WPF

我想以类似于iPhone上的应用程序的方式在WPF中安排uicontrol。它们应该定位在网格上,但用户应该能够将它们拖动到其他地方,在释放鼠标按钮(或iPhone的手指)后,所选的UIControl应该捕捉回网格中的下一个位置。其他UIElement应自动重新排列

此外,用户还应该用一条线或其他东西连接两个元素

我对WPF没有经验。第一个问题是,是否有一个容器适用于某个对象(System.Windows.Controls.Grid?),或者是否必须为此扩展画布或其他对象

我想知道可以使用WPF框架中的哪些元素,以及我必须自己编写哪些元素

对于没有iPhone的用户:

更新


我已经看过BangOTricks示例中的AnimatedTilePanel(见下文),这一个解释了如何创建自己的面板以及如何让它在那里安排事情。。然而,在本例中,我仍然需要一个如何正确实现拖放的想法。

不幸的是,您将不得不自己编写很多东西,因为WPF不会自动完成您需要的操作

要定位控件,可以使用UniformGrid或Grid。假设它与您展示的iPhone视频非常相似,您可以使用具有4列和所需行数的UniformGrid


对于拖动动画,在布局方面,您可以从对正在拖动的任何对象操作RenderTransform属性开始,但在满足移动到另一个“单元”所需的任何阈值后,您必须设置一个处理程序进行检查,您必须更改树中项目的顺序。

查看Kevin的Bag-o-Tricks中的动画文件面板,网址为:


它不会做你想要的一切,但它会告诉你如何编写一个面板,在更改大小或顺序时为其子面板设置动画。

09年这篇旧文章的新输入。今年早些时候(2012年),有人写了一篇文章,并将其开源。我试过了,效果很好——就像iPhone菜单上的一样


您还可以应用于其他UI元素或用户控件。

设置瓷砖面板动画看起来很有趣。。我正在阅读代码,并试图了解它是如何工作的,就我所知,thx为您的答案,面板被扩展,然后排列覆盖。有趣的细节:作者在WPF.util中编写了通用动画代码。你有没有发现这个问题?我也在寻找一个支持拖放的动画面板控件。我已经接近了,但我只是不知道足够的WPF,使它的工作。