2009-12-17 71 views
10

在以下XAML中,單詞「測試」橫向中心但不垂直。如何垂直對齊StackPanel中的TextBox?

我怎樣才能讓它垂直居中?

alt text http://www.deviantsart.com/upload/i4i5mt.png

<Window x:Class="TestVerticalAlign2343.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     WindowStartupLocation="CenterScreen" 
    Title="Window1" Height="768" Width="1024"> 
    <DockPanel LastChildFill="True"> 
     <Slider x:Name="TheSlider" 
       DockPanel.Dock="Left" 
       Orientation="Vertical" 
       HorizontalAlignment="Center" 
       HorizontalContentAlignment="Center" 
       Minimum="0" 
       Maximum="10" 
       Cursor="Hand" 
       Value="{Binding CurrentSliderValue}" 
       IsDirectionReversed="True" 
       IsSnapToTickEnabled="True" 
       Margin="10 10 0 10"/> 
     <Border DockPanel.Dock="Right" Background="Beige" 
       Padding="10" 
       Margin="10" 
       CornerRadius="5"> 
      <StackPanel Height="700"> 
       <TextBlock 
        Text="Test" 
        HorizontalAlignment="Center" 
        VerticalAlignment="Center" 
        FontSize="200" x:Name="TheNumber"/> 

      </StackPanel> 
     </Border> 
    </DockPanel> 
</Window> 

回答

16

一個StackPanel,無論你如何拉伸它,就會崩潰圍繞着孩子們。你不能讓它增長更多。基本上,「身高= 700」並不能幫助你。

因此,將StackPanel上的VerticalAlignment設置爲「center」,以便堆棧面板進入dock面板的中心......或者完全移除堆疊面板並在TextBlock上設置VerticalAlignment =「Center」。

+5

+1「堆疊式面板,不管你如何拉伸它,將圍繞它的孩子崩潰」。 – 2009-12-17 08:54:21

-2

環繞TextBlock的StackPanel中的內部,看看VerticalContentAlignment。

+4

但StackPanel似乎沒有VerticalContentAlignment,例如,按鈕:http://msdn.microsoft.com/en-us/library/system.windows.controls.control.verticalcontentalignment.aspx – 2009-12-17 01:09:49

10

看來我asked this question 10 months ago,我得到了上述方案通過DockPanel中LastChildFill =真這樣更換的StackPanel工作:

<DockPanel LastChildFill="True"> 
    <TextBlock 
     DockPanel.Dock="Top" 
     Text="Test" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Center" 
     FontSize="200" x:Name="TheNumber"/> 
</DockPanel> 
+0

這正是我需要的。我把一個StackPanel放在DockPanel中,然後將StackPanel的VerticalAlignment設置爲Center。 StackPanel內容隨後位於StackPanel中,該StackPanel被擴展爲填充DockPanel。 – 2012-08-28 13:28:56

+0

我沒有找到我的工具箱中的DockPanel。但你可以使用ContentControl它工作得很好 – 2013-05-03 09:14:38

+1

謝謝....它的工作原理.... – maamaa 2015-08-06 05:11:13

4

我碰到這個,這似乎很好地工作跌跌撞撞:

<Grid> 
    <TextBlock Text="My Centered Text" 
       TextAlignment="Center" 
       VerticalAlignment="Center"/> 
</Grid> 

網格保證其內的單個文本框填充單人牢房中網格和VerticalAlignment在TextBlock中確保文本中居中比。

無論您需要如何水平定位/對齊文本(上面的代碼片段也將它居中在此軸上,但更改此操作不會改變垂直居中)。

+0

我有以下情形: 然而,只有第一文本塊在中心垂直對齊,第二個文本塊仍然頂部對齊。 – 2015-10-28 09:11:56