为什么WP7 ListPicker具有与TextBox不同的边距和高度

时间:2012-01-17 09:20:35

标签: silverlight windows-phone-7 listpicker

我的WP7应用中有一个页面,TextBox旁边有一个ListPicker。在默认模式下,它们没有正确对齐; ListPickerTextBox的填充不同,其高度也不同。

Image to show ListPicker problem

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <StackPanel Orientation="Horizontal">
        <TextBox HorizontalAlignment="Left" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top"/> 
        <toolkit:ListPicker Width="170" ItemsSource="{Binding l}" Style="{StaticResource ListPickerStyle1}" VerticalAlignment="Top"/>
    </StackPanel>
</Grid>

手动调整ListPicker的模板以正确适应这里是棘手且容易出错的。例如,调整其高度时,标题(即所选项目的文本)不再位于组件的中心。

我的应用目前无法通过MS应用审核,因为组件的高度不同。

我是否可以轻松地将toolkit:ListPicker设置为与TextBox具有相同的外观?

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是获取默认样式的副本,并使用Blend进行调整,使其完全符合您的要求。这个进行一些试验和错误以进行整理。

然后,您可以使用隐式样式规则将其应用于所有ListPickers,而无需在每个实例上显式设置样式:

<Style x:Key="MyListPickerStyle
       TargetType="toolkit:ListPicker>
    .... your tweaks here
</Style>

<Style TargetType="toolkit:ListPicker"
       BasedOn="{StaticResource MyListPickerStyle}" />

当然可能更容易调整TextBox样式:)