WPF: Как анимировать список компонентов? - PullRequest
3 голосов
/ 16 февраля 2010

Допустим, у меня есть список визуальных объектов (CustomControls). Они могут быть внутри StackPanel или быть элементами в ListView, я думаю, что контейнер является частью ответа на этот вопрос.

Визуально вы можете думать об этих объектах как об элементах в очереди. Каждый раз, когда я извлекаю объект из нижней части этой очереди, я хотел бы анимировать всю очередь с вытянутым объектом, выходящим из рамки просмотра, и новой (представьте, что рамка просмотра отображает только подмножество), скользящей с помощью остальные элементы.

Каков наилучший подход к созданию этой анимации и какой контейнер лучше для нее?

1 Ответ

5 голосов
/ 16 февраля 2010

Взгляните на AnimatingTilePanel Кевина Мура . Когда элементы добавляются или удаляются с панели, остальные элементы анимируются, чтобы убраться с дороги или занять оставшееся пространство. Вы хотели бы сделать что-то подобное, кроме как на основе логики StackPanel.

Вы хотите рассмотреть проблему в двух частях. Второе, вероятно, будет намного проще.

  1. Создайте панель (не элемент управления), которая анимирует своих дочерних элементов так, как вы хотите.
  2. Создайте шаблон ListBox, который задает ItemsPanelTemplate , который использует новую панель вместо панели стека по умолчанию.

В конце концов, идея в том, что вам вообще не нужно создавать собственный элемент управления ListBox. Ваше взаимодействие с ListBox (которое будет осуществляться через его свойство Items или, предпочтительно, связанную коллекцию) будет выполняться точно так же, как если бы анимация вообще не существовала. Вы будете полагаться на пользовательский класс Panel для выполнения анимации.

ОБНОВЛЕНИЕ
Я также нашел этот образец, AnimatedLayoutPanel , который очень похож, но есть хорошая витрина на основе Silverlight.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...