Простейший пример ComboBox для Silverlight for Windows Phone 7

Как известно, в CTP версии Windows Phone 7 Developer kit не поддерживаются некоторые элементы управления: ComboBox, Frame, многие элементы управления из Silverlight Toolkit. Таким образом, при необходимости использовать какие-либо из этих контролов возникает задача написания собственной версии специально для Windows Phone 7.


Идея
Именно такая задача встала передо мной. В этом посте я расскажу, как именно я ее решил. Сразу предупреждаю - это отнюдь не финальная реализация, это скорее небольшой набросок, иллюстрация. Для ее завершения, как минимум, необходимо добавить стили, соответствующие системным и исправить некоторые мелкие проблемы.

Идея заключается в следующем: разместим в элементе управления TextBlock, содержащий выбранный элемент, и ListBox, содержащий список элементов. Высоту TextBlock'а сделаем примерно в 64 пикселя, высоту списка же -в несколько раз больше. В зависимости от того, в каком состоянии находится элемент управления, будем изменять высоту элемента в соответствии с высотой отображаемого содержимого.

Всего допустимы 2 состояния:
1. Свернутое состояние - высота минимальна, отображается только TextBlock.
2. Развернутое состояние - высота максимальна, отображается только ListBox.

Реализация
Прежде всего добавим в проект новый UserControl и наберем примерно такую разметку:

Следующее, что необходимо набрать – код анимации для развертывания и свертывания списка. Я реализовал весьма простую анимацию:

Теперь осталось написать C#-код для обработки событий:

Результат

Верхний список развернут
Списки свернуты

Недоработки
1. Стилизация - данная реализация выпадающего списка не поддерживает стили, не позволяет гибко переопределять визуальное представление элементов.
2. Гибкость - в данной реализации нет возможности настраивать высоту выпадающего списка.
3. Шаблонизация - в данной реализации нет поддержки шаблонов для элементов списка.
4. Визуальные эффекты - в отличие от системного ComboBox'а Windows Phone 7 эффект прокрутки при выборе элемента списка отсутствует.

Спасибо за внимание!
Надеюсь, эта короткая статья поможет в разработке ПО для Windows Phone 7.

Простейший пример ComboBox для Silverlight for Windows Phone 7: 4 комментария

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *