我怎么能垂直对齐一个StackPanel内一个TextBox?
-
20-09-2019 - |
题
在以下XAML,单词 “测试” 中心的水平强>而不是垂直方向。
我怎样才能得到它垂直居中?
<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>
解决方案
一个StackPanel,无论你如何拉伸它,会崩溃各地的孩子们。你不能让他成长不止于此。基本上, “HEIGHT = 700” 是没有帮助你。
因此,无论设置VerticalAlignment上的StackPanel到“中心”,使得StackPanel中进入DockPanel中的中心...或在TextBlock的完全消除的StackPanel并设置VerticalAlignment =“中心”。
其他提示
我似乎问这个问题10个月之前,我得到了上述方案通过的 DockPanel中LastChildFill =真这样的替换的的StackPanel 的工作:
<DockPanel LastChildFill="True">
<TextBlock
DockPanel.Dock="Top"
Text="Test"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="200" x:Name="TheNumber"/>
</DockPanel>
我偶然发现此这似乎很好地工作:
<Grid>
<TextBlock Text="My Centered Text"
TextAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
网格确保其内的单个文本框填充孤细胞在网格和VerticalAlignment TextBlock中确保了文本内比居中。
只要位置/然而你需要水平对齐文本(上面的代码中心它在这个轴也有,但是这种改变不改变垂直居中)。
内围绕的TextBlock的StackPanel中,检查出VerticalContentAlignment。
不隶属于 StackOverflow