4

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

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

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

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

对于没有 iPhone 的人:http ://www.youtube.com/watch?v=3omhu2AUWC8

更新

我在 BangOTricks 示例中查看了 AnimatedTilePanel(见下文),这个解释了如何创建自己的面板以及如何让它在那里安排东西。但是我仍然需要知道如何在这个示例中正确实现拖放..

4

3 回答 3

2

不幸的是,您必须自己编写很多东西,因为 WPF 不会自动执行您要查找的内容。

对于定位控件,您可以使用 UniformGrid 或 Grid。假设它很像您展示的 iPhone 视频,您可以使用具有 4 列的 UniformGrid 以及您需要的任意多行。

对于拖动动画,布局方面,您可以首先在被拖动的任何内容上操作 RenderTransform 属性,但是您必须设置一个处理程序来检查一旦您达到了移动到另一个“单元格”所需的任何阈值-- 此时,您将不得不更改树中项目的顺序。

于 2009-02-25T01:43:17.367 回答
1

看看 Kevin 的 Bag-o-Tricks 中的 AnimatedTilePanel:

http://j832.com/bagotricks/

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

于 2009-02-25T10:15:16.293 回答
0

09 年对这篇旧帖子的新输入。今年早些时候(2012 年),有人编写了FluidWrapPanel并将其开源。我试过了,它就像一个魅力 - 就像 iPhone 菜单上的那样。

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

于 2012-11-27T08:41:09.870 回答