2010-02-15 3 views
2

У меня есть элемент управления ListBox WPF, который отображает элементы RSS-канала. Иногда я проверяю источник RSS-канала для новых элементов. Как только я обнаруживаю новый элемент, я добавляю его в наблюдаемую коллекцию, которая сразу же добавляет новый элемент в список ListBox.Скользящий эффект при добавлении новых элементов в WPF ListBox

Есть ли способ «вставить» новый элемент сверху, нажав на существующие предметы? Как я могу добиться такого эффекта? Можно ли это сделать с помощью ListBox, или мне нужно прибегнуть к моему собственному контейнеру, например, к StackPanel и анимировать, например, с высоты вновь добавленных элементов управления?

ответ

2

Это можно сделать с помощью ListBox. Используйте ItemContainerStyle для стилирования элементов ListBoxItems, созданных для вас: этот стиль может включать в себя анимацию, например. добавив EventTrigger для загруженного события в Style.Triggers и преобразует. Например, в вашем действии триггера вы можете анимировать высоту, чтобы элемент расширялся на место, или если высота неизвестна, вы можете создать свой стиль ScaleTransform и в вашем триггерном действии оживить масштаб этого преобразования от 0 до 1.

+0

Это кажется выполнимым, но я бег в проблемы с наличием привязок в раскадровке (я привязка к IsNew собственности, так что я только анимировать новые предметы, не все предметы, когда ListBox загружен изначально) , –

+0

Я не уверен, что такое свойство IsNew, но это, вероятно, будет частью триггера, а не привязки в раскадровке; зависит от того, как вы это делаете. Вам нужно будет опубликовать дополнительную информацию для диагностики проблемы; но я бы предложил в качестве первого шага вы отложили это в сторону и вместо этого рассмотрите решение Джоша (это намного опрятно) и вернитесь к моему, только если он не работает для вашего сценария. – itowlson

5

Я только что написал ответ на этот вопрос, который очень похож на ваш.

WPF how to animate a list of components

+0

Nice one - использование универсальной анимационной панели, а затем прорезка, которая через ItemsPanel, является аккуратно модульной и красиво идиоматичной. Спасибо! – itowlson

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