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

Четверг, 8. Апрель 2010
Раздел: C#, автор:

Как известно, в 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.

 Обсудить на форуме


Получать обновления на почту:     

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


  1. Malux :

    Круто. Надо будет тоже попробовать для windows phone что-нибудь сделать

    [Ответить]


  2. RIM :

    Что-то не пашет System.AccessViolationException

    [Ответить]

    Bers:

    Разумеется, не работает, написано же "в CTP версии Windows Phone 7 Developer kit".
    http://phone.codeplex.com/ поможет тебе, если нужен комбобокс для wp7/8.

    [Ответить]


  3. RIM :

    Ну не ра бо та ет ттттттт

    [Ответить]


Оставьте ваш комментарий