Как можно вертикально выровнять TextBox внутри StackPanel?
В следующем XAML слово "Test" центрирует горизонтально, но не вертикально.
Как я могу получить его по вертикали?
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>
Ответы
Ответ 1
Пакет стека, независимо от того, как вы его растянете, рухнет вокруг детей. вы не можете заставить его расти больше, чем это. В принципе, что "Высота = 700" вам не помогает.
Итак, либо установите VerticalAlignment на StackPanel на "центр", чтобы стекная панель попала в центр док-панели... или полностью удалила стекную панель и установила VerticalAlignment = "Центр" в TextBlock.
Ответ 2
Кажется, я задал этот вопрос 10 месяцев назад, я получил описанный выше сценарий, заменив StackPanel на DockPanel LastChildFill = True:
<DockPanel LastChildFill="True">
<TextBlock
DockPanel.Dock="Top"
Text="Test"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="200" x:Name="TheNumber"/>
</DockPanel>
Ответ 3
Я наткнулся на это, что кажется безупречным:
<Grid>
<TextBlock Text="My Centered Text"
TextAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
Сетка обеспечивает, чтобы единый TextBox внутри нее заполнял одиночную ячейку в сетке, а VerticalAlignment в TextBlock обеспечивал, чтобы текст был центрирован в пределах, чем.
Просто разместите/выровняйте текст по горизонтали, но вы требуете (вышеупомянутый фрагмент также центрирует его на этой оси, но изменение этого не изменяет вертикальное центрирование).
Ответ 4
Внутри StackPanel, который окружает TextBlock, проверьте VerticalContentAlignment.