2009-02-24 2 views
4

Я хотел бы организовать UIControls в WPF аналогично приложениям на iPhone. Они должны располагаться на сетке, но пользователь должен иметь возможность перетаскивать их в другое место, после отпускания кнопки мыши (или пальца в случае iPhone) выбранный UIControl должен вернуться к следующей позиции в сетке. Другие UIElements должны быть перегруппированы автоматически.Упорядочить элементы GUI в WPF аналогично приложениям на iPhone

Далее пользователю также следует подключить два элемента с линией или чем-то еще.

У меня нет опыта работы с WPF. Первый вопрос: есть ли контейнер, который подходит для чего-то (System.Windows.Controls.Grid?), Или если мне нужно расширить холст или что-то еще для этого.

Я хотел бы знать, какие элементы из рамки WPF можно использовать и какие элементы мне нужно написать.

Для людей, которые не имеют в iPhone: http://www.youtube.com/watch?v=3omhu2AUWC8

Update

Я смотрел на AnimatedTilePanel в примерах BangOTricks (смотри ниже), это один объясняет, как создать свою собственную панель и как пусть это устраивает там. Однако мне все еще нужна идея о том, как правильно реализовать drag and drop в этом примере.

+0

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

ответ

1

Взгляните на AnimatedTilePanel из сумки-о-Tricks Кевина на:

http://j832.com/bagotricks/

Это не делает все, что вы хотите, но это покажет вам, как написать панель, которая оживляет своих детей, когда изменение размера или порядка.

+0

«Анимационная плитка» выглядит интересной.Я читаю код и пытаюсь понять, как это работает, THX для ответа на вызов – Nils

+0

, насколько я вижу, панель была расширена, а затем ArrangeOverride переопределена. Интересная деталь: автор написал общий код анимации в WPF.Util – Nils

2

К сожалению, вам придется писать много вещей самостоятельно, так как WPF автоматически не делать то, что вы ищете для.

Для позиционирования элементов управления вы можете использовать UniformGrid или Grid. Предполагая, что это похоже на видео iPhone, которое вы показали, вы можете просто использовать UniformGrid с 4 столбцами и сколько угодно строк.

Для перетаскивания анимации, макета, вы можете начать с манипулирования свойством RenderTransform на том, что перетаскивается, но вам нужно будет установить обработчик для проверки, как только вы выполнили любой порог, необходимый для перемещения в другая «ячейка» - и в этот момент вам придется изменить порядок элементов в дереве.

0

Новый вход в это старое сообщение в 09. В начале этого года (2012) кто-то написал FluidWrapPanel и открыл его. Я попробовал, и это работает как шарм - так же, как в меню iPhone.

Вы также можете применить к другим элементам пользовательского интерфейса или UserControl.

Смежные вопросы