1

在用户做出选择后,我需要减少列表选择器在手机屏幕上占用的空间量。我可以减小所选项目的宽度,但我还没有找到减小高度的方法。是的,我可以减小控件的大小,但标题始终占用 35 个单位,所选项目占用的面板高度为 70。减小列表选择器的高度使其看起来更小,但这只会使底部变黑所选项目显示的面板。文本仍居中。设置 VerticalContentAlignment 无济于事,因此随着高度的降低,文本会逐渐模糊。

4

1 回答 1

1

这可以通过在 Expression Blend 中创建模板来轻松完成——

  1. 在 Expression Blend 中打开您的项目。
  2. 使用 ListPicker 导航到您的页面。
  3. 在对象和时间线框中,找到您的 ListPicker。
  4. 右键单击,选择 Edit Template -> Edit a Copy -> Enter a name to use 选择 Define in -> Application,然后点击 OK。
  5. 单击对象和时间轴框中的网格。在“属性”框中,输入新的高度。我用的是36。
  6. 展开边框
  7. 单击用户控件。
  8. 在属性窗口中,将字体大小从 19 pt 更改为小号 (12 pt)
  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>
于 2012-01-28T23:06:25.167 回答