在下面的XAML中,单词“Test”将水平居中,但不是垂直居中。
如何让它垂直居中?
<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>
答案 0 :(得分:17)
无论你如何伸展它,堆叠板都会在孩子周围坍塌。你不能让它成长得更多。基本上,“高度= 700”并没有帮助你。
所以要么将StackPanel上的VerticalAlignment设置为“center”,以便stackpanel进入dockpanel的中心...或者完全删除stackpanel并在TextBlock上设置VerticalAlignment =“Center”。
答案 1 :(得分:10)
似乎我asked this question 10 months ago,我通过将 StackPanel 替换为 DockPanel LastChildFill = True 来实现上述方案:
<DockPanel LastChildFill="True">
<TextBlock
DockPanel.Dock="Top"
Text="Test"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="200" x:Name="TheNumber"/>
</DockPanel>
答案 2 :(得分:5)
我偶然发现了这似乎完美无缺:
<Grid>
<TextBlock Text="My Centered Text"
TextAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
Grid确保其中的单个TextBox填充网格中的单个单元格,TextBlock中的VerticalAlignment确保文本居中于。
只需根据需要水平放置/对齐文本(上面的代码片段也会在此轴中居中,但更改此内容并不会改变垂直居中)。
答案 3 :(得分:-2)
在围绕TextBlock的StackPanel内部,查看VerticalContentAlignment。