스택 패널 내부의 텍스트 상자를 어떻게 세로로 정렬 할 수 있습니까?
-
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>
해결책
스택 패널은 어떻게 스트레칭하든 아이들 주위에 무너질 것입니다. 당신은 그보다 더 성장할 수 없습니다. 기본적으로 "높이 = 700"은 당신을 돕지 않습니다.
따라서 스택 패널이 도크 패널의 중심으로 들어가도록 스택 패널에 수직 축합을 설정하거나 스택 패널을 완전히 제거하고 TextBlock에서 verticalalignment = "Center"를 설정하십시오.
다른 팁
나 보인다 10 개월 전에이 질문을했습니다, 나는 위의 시나리오가 스택 패널 ~와 함께 DockPanel lastchildfill = true 이와 같이:
<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>
그리드는 그 안의 단일 텍스트 상자가 그리드의 독방 셀을 채우고 텍스트 블록의 수직 정렬은 텍스트가 그보다 중앙에 있는지 확인합니다.
단순히 텍스트를 수평 적으로 위치/정렬하지만 필요하지만 위의 스 니펫은이 축에서도 중심이되지만이를 변경해도 수직 센터링이 변경되지는 않습니다).
TextBlock을 둘러싸고있는 StackPanel 내부에서 verticalContentalIngment를 확인하십시오.
제휴하지 않습니다 StackOverflow