【问题标题】:How to vertically aligned a TextBlock in a StackPanel如何在 StackPanel 中垂直对齐 TextBlock
【发布时间】:2014-10-15 05:55:34
【问题描述】:

我在 Windows 手机上的 c# 中执行此操作。我想要一个 TextBlock 在 StackPanel 中垂直居中对齐,高度为 58。这是我所做的:

<StackPanel Height="58" VerticalAlignment="Center">
                <TextBlock Text="{Binding Name}" Style="{StaticResource SubheaderTextBlockStyle}" Foreground="black"  />
            </StackPanel>

但它不会垂直居中对齐。你能告诉我为什么以及如何解决这个问题吗?

谢谢。

【问题讨论】:

标签: windows-phone-8.1


【解决方案1】:

我猜你应该使用Grid 而不是StackPanel 就像上面提到的@The-First-Tiger 和@Krishna 一样,而且你是否放错了VerticalAlignment?您希望TextBlock 垂直居中对齐,所以应该是这样的:

 <Grid Height="58" >
   <TextBlock  VerticalAlignment="Center" Text="{Binding Name}"  Foreground="black"  />
 </Grid   

【讨论】:

  • 谢谢。我是 C# Windows 编程的新手。 Grid 比 StackPanel 重吗?意思是它使用更多的内存吗?一般来说,如果可以的话,我应该使用 StackPanel 而不是网格吗?
  • @michael 因为我不清楚他们每个人的内存消耗,所以建议看看这个。 stackoverflow.com/questions/15575854/…
【解决方案2】:

StackPanel 不适合这个。它“堆叠”东西而不是对齐它们。

尝试改用Grid

<Grid Height="58">
    <TextBlock Text="{Binding Name}" Height="20" Foreground="black"/>
</Grid>

【讨论】:

    【解决方案3】:

    根据MSDN docs about StackPanel

    A StackPanel 将子元素排列成可以定向的单行 水平或垂直。

    因此,在您的情况下,StackPanel 不是正确使用的控件。如果您希望您的控件固定在特定位置,您可以使用DockPanel 并将您的控件放在其中。 DockPanel 的子控件可以使用.Dock 属性来对齐自己

    <DockPanel>
            <Button DockPanel.Dock="Bottom" Name="btn"  HorizontalAlignment="Center" 
                    VerticalAlignment="Bottom"></Button>
    </DockPanel>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-21
      • 2010-12-02
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 2015-09-27
      • 2012-01-09
      • 1970-01-01
      相关资源
      最近更新 更多