<ListBox x:Name="DropDownList" VerticalAlignment="Top" MinHeight="250" SelectionMode="Single" SelectionChanged="DropDownList_SelectionChanged" Visibility="Collapsed" Padding="0">
<!-- Собственно выпадающий список -->
<TextBlock x:Name="SelectedValueTextBlock" Style="{StaticResource PhoneTextLargeStyle}" VerticalAlignment="Center" MouseLeftButtonDown="SelectedValueTextMouseLeftButtonDown" TextWrapping="Wrap" Margin="20,12,20,12" />
<!-- Здесь отображается текущий выбранный элемент -->
<Border VerticalAlignment="Center">
<!-- Здесь будут размещены анимации свертывания и развертывания списка -->
<Grid x:Name="LayoutRoot" Background="{StaticResource TransparentBrush}" Height="64">
<!-- Контейнер для содержимого контрола. Размер этого контейнера будет изменяться в зависимости от того, в каком состоянии находится контрол -->
<Border BorderBrush="{StaticResource PhoneForegroundBrush}" BorderThickness="{StaticResource PhoneDefaultBorderThickness}" Background="{StaticResource TransparentBrush}">
<!-- Внешняя граница контрола -->
Прежде всего добавим в проект новый UserControl и наберем примерно такую разметку:
2. Развернутое состояние - высота максимальна, отображается только ListBox.
1. Свернутое состояние - высота минимальна, отображается только TextBlock.
Всего допустимы 2 состояния:
Идея заключается в следующем: разместим в элементе управления TextBlock, содержащий выбранный элемент, и ListBox, содержащий список элементов. Высоту TextBlock'а сделаем примерно в 64 пикселя, высоту списка же -в несколько раз больше. В зависимости от того, в каком состоянии находится элемент управления, будем изменять высоту элемента в соответствии с высотой отображаемого содержимого.
Именно такая задача встала передо мной. В этом посте я расскажу, как именно я ее решил. Сразу предупреждаю - это отнюдь не финальная реализация, это скорее небольшой набросок, иллюстрация. Для ее завершения, как минимум, необходимо добавить стили, соответствующие системным и исправить некоторые мелкие проблемы.
Как известно, в CTP версии Windows Phone 7 Developer kit не поддерживаются некоторые элементы управления: ComboBox, Frame, многие элементы управления из Silverlight Toolkit. Таким образом, при необходимости использовать какие-либо из этих контролов возникает задача написания собственной версии специально для Windows Phone 7.
Четверг, 8. Апрель 2010
Простейший пример ComboBox для Silverlight for Windows Phone 7
Простейший пример ComboBox для Silverlight for Windows Phone 7
Комментариев нет:
Отправить комментарий