如何在ListView的DataTemplate中居中文本TextBlock?

时间:2015-02-13 15:23:01

标签: xaml listview windows-phone-8.1

我在页面上只有ListView。

我希望TextBlock在水平方向上居中。

我尝试将TextBlock的Horizo​​nltal对齐方式设置为Stretch 或者将它包装在StackPanel上并将其设置在那里但没有成功。

<ListView x:Name ="groupList"
              Background="#72AAFF"
              SelectionChanged="groupList_SelectionChanged" >
    <ListView.ItemTemplate>
        <DataTemplate>          
                <TextBlock Text="{Binding}"
                           TextWrapping="Wrap"                                
                           VerticalAlignment="Top"
                           FontSize="36"
                           Margin="10,10,0,0"
                           Foreground="#92ECFD"
                           HorizontalAlignment="Stretch"                               
                           TextAlignment="Center"/>

        </DataTemplate>
    </ListView.ItemTemplate>
    <ListView.Items>
        <x:String>One</x:String>
        <x:String>Two</x:String>
        <x:String>Three</x:String>
        <x:String>etc</x:String>
        <x:String>One</x:String>
        <x:String>One</x:String>
    </ListView.Items>
</ListView>

1 个答案:

答案 0 :(得分:2)

除非您更改容器的 Horizo​​ntalContentAlignment ,否则 TextBlock 中的对齐设置不会生效。将其添加到容器的样式中,一切都应该有效:

<ListView x:Name ="groupList" Background="#72AAFF">
    <ListView.ItemContainerStyle>
      <Style TargetType="ListViewItem">
         <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
      </Style>
    </ListView.ItemContainerStyle>
    <ListView.ItemTemplate>
    <!-- reso of the code -->

您还可以在at MSDN找到一些信息。

相关问题