Как установить высоту выбранного элемента в Silverlight ListPicker в Windows Phone - PullRequest
1 голос
/ 29 января 2012

Мне нужно уменьшить количество места, которое средство выбора списка занимает на экране телефона после того, как пользователь сделал выбор.Я могу уменьшить ширину выбранного элемента, но я не нашел способа уменьшить высоту.Да, я могу уменьшить размер элемента управления, но заголовок всегда занимает 35 единиц, а высота выбранного элемента имеет высоту 70. Уменьшение высоты средства выбора списка делает его меньшим, но это лишь затемняет нижнюю частьпанель, на которой отображается выбранный элемент. Текст по-прежнему центрирован.Установка VerticalContentAlignment не помогает, и поэтому текст постепенно затеняется при уменьшении высоты.Есть ли способ уменьшить высоту панели, на которой отображается выбранный элемент, или сместить выравнивание выделенного текста по верху панели, а затем убрать нижнюю часть, на которой нет текста?

1 Ответ

1 голос
/ 29 января 2012

Это легко сделать, создав шаблон в Expression Blend -

  1. Откройте свой проект в Expression Blend.
  2. Перейдите на свою страницу с помощью ListPicker.
  3. В поле «Объекты и временная шкала» найдите свой ListPicker.
  4. Щелкните правой кнопкой мыши, выберите «Изменить шаблон» -> «Редактировать копию» -> введите имя для использования, выберите «Определить в» -> «Приложение» и нажмитеОК.
  5. Нажмите Сетка в поле Объект и Временная шкала.В поле «Свойства» введите новую высоту.Я использовал 36.
  6. Расширить границу
  7. Нажмите UserControl.
  8. В окне свойств измените размер шрифта с 19 пунктов на маленький размер (12 пунктов)
  9. Теперь, когда вы создали шаблон, вам нужно применить его ко всем спискам выбора, например:
<toolkit:ListPicker Style="{StaticResource ListPickerStyle1}"/>

Вот источник.

    <Style x:Key="ListPickerStyle1" TargetType="toolkit:ListPicker">
                <Setter Property="Background" Value="{StaticResource PhoneTextBoxBrush}"/>
                <Setter Property="Foreground" Value="{StaticResource PhoneTextBoxForegroundBrush}"/>
                <Setter Property="BorderBrush" Value="{StaticResource PhoneTextBoxBrush}"/>
                <Setter Property="BorderThickness" Value="{StaticResource PhoneBorderThickness}"/>
                <Setter Property="FontSize" Value="{StaticResource PhoneFontSizeMediumLarge}"/>
                <Setter Property="HorizontalContentAlignment" Value="Left"/>
                <Setter Property="Margin" Value="{StaticResource PhoneTouchTargetOverhang}"/>
                <Setter Property="PickerPageUri" Value="/Microsoft.Phone.Controls.Toolkit;component/ListPicker/ListPickerPage.xaml"/>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="toolkit:ListPicker">
                            <StackPanel>
                                <VisualStateManager.VisualStateGroups>
                                    <VisualStateGroup x:Name="PickerStates">
                                        <VisualState x:Name="Normal"/>
                                        <VisualState x:Name="Highlighted">
                                            <Storyboard>
                                                <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Background" Storyboard.TargetName="Border">
                                                    <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneTextBoxEditBackgroundColor}"/>
                                                </ObjectAnimationUsingKeyFrames>
                                                <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Border">
                                                    <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneTextBoxEditBorderBrush}"/>
                                                </ObjectAnimationUsingKeyFrames>
                                            </Storyboard>
                                        </VisualState>
                                        <VisualState x:Name="Disabled">
                                            <Storyboard>
                                                <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Background" Storyboard.TargetName="Border">
                                                    <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource TransparentBrush}"/>
                                                </ObjectAnimationUsingKeyFrames>
                                                <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Border">
                                                    <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
                                                </ObjectAnimationUsingKeyFrames>
                                                <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="Foreground" Storyboard.TargetName="UserControl">
                                                    <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
                                                </ObjectAnimationUsingKeyFrames>
                                            </Storyboard>
                                        </VisualState>
                                    </VisualStateGroup>
                                </VisualStateManager.VisualStateGroups>
                                <ContentControl ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Foreground="{StaticResource PhoneSubtleBrush}" FontSize="{StaticResource PhoneFontSizeNormal}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="0 0 0 8"/>
                                <Grid Height="36">
                                    <Border x:Name="Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
                                        <UserControl x:Name="UserControl" Foreground="{TemplateBinding Foreground}" FontSize="16">
                                            <StackPanel>
                                                <TextBlock x:Name="MultipleSelectionModeSummary" Margin="8 8 0 8"/>
                                                <Canvas x:Name="ItemsPresenterHost" MinHeight="46">
                                                    <ItemsPresenter x:Name="ItemsPresenter">
                                                        <ItemsPresenter.RenderTransform>
                                                            <TranslateTransform x:Name="ItemsPresenterTranslateTransform"/>
                                                        </ItemsPresenter.RenderTransform>
                                                    </ItemsPresenter>
                                                </Canvas>
                                            </StackPanel>
                                        </UserControl>
                                    </Border>
                                </Grid>
                            </StackPanel>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
...