在堆栈面板中对齐文本垂直和水平中心?

时间:2012-06-29 13:28:57

标签: silverlight windows-phone-7 windows-phone-7.1

我正在尝试将文本块垂直和水平地对齐在Listview中的堆栈面板中,但我只能在文本中心而不是水平地获取文本。此外,文字没有被包裹。这是我尝试过的代码:

 <ListBox Name="lstTiles" Margin="12,0,-12,0" Grid.Row="1" SelectionChanged="lstTiles_SelectionChanged">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <toolkit:WrapPanel/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Background="{StaticResource PhoneAccentBrush}" Width="145" Height="80" Margin="8,8,0,0" Orientation="Vertical" >
                    <TextBlock Text="{Binding Name}" Tag="{Binding ID}" Style="{StaticResource PhoneTextNormalStyle}" FontSize="15" TextWrapping="Wrap" TextAlignment="Center" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

如何实现垂直,水平和textwrap文本?

1 个答案:

答案 0 :(得分:0)

看起来好像你将StackPanel的方向设置为Horizo​​ntal,你将文本块放在彼此旁边而不是彼此叠加。由于StackPanel元素占用了子元素的大小,因此您可以将其视为水平并排的文本块列表。由于每个文本块都采用其中文本的大小,因此您将看到宽度不同的块,因此水平居中将无效。

您可以使用边距(疼痛)来实现相等的宽度。我不推荐这个。

您还可以在堆栈面板中放置设定宽度的网格,并将文本块放在网格上。你可以设置文本块的宽度以获得正确的效果,但我现在无法测试它,我不记得它是否会导致文本拉伸。

对于文本换行,我假设你在文本块中讨论,这很容易 - 只需将textblock的TextWrapping属性设置为Wrap。

尝试在listboxitem上设置Horizo​​ntalContentAlignment和VerticalContentAlignment属性。我现在没有自己的开发计算机,所以我无法进行实验,但这里有一篇可能对您有帮助的帖子:Silverlight 3: ListBox DataTemplate HorizontalAlignment。看看前两个答案,看看哪个答案对你的情况最有帮助,当然代替中心,代替左,上或拉伸。