스택 패널 내부의 텍스트 상자를 어떻게 세로로 정렬 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1918847

  •  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를 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top