[wpf] WPF TextBlock의 텍스트 세로 정렬

TextBlock 내부의 텍스트에 세로 가운데 맞춤을 어떻게 할당합니까? TextAlignment 속성을 찾았지만 가로 텍스트 맞춤입니다. 세로 텍스트 정렬을 위해 어떻게합니까?



답변

텍스트 블록 자체는 수직 정렬을 할 수 없습니다

내가 찾은 가장 좋은 방법은 텍스트 블록을 테두리 안에 넣는 것이므로 테두리가 정렬됩니다.

<Border BorderBrush="{x:Null}" Height="50">
    <TextBlock TextWrapping="Wrap" Text="Some Text" VerticalAlignment="Center"/>
</Border>

참고 : 이것은 그리드를 사용하는 것과 기능적으로 동일하며, 컨트롤이 나머지 레이아웃에 맞게 조정하는 방법에 따라 다릅니다.


답변

Orion Edwards Answer 는 어떤 상황에서도 작동 하지만 , 원할 때마다 테두리를 추가하고 테두리 속성을 설정하기가 어려울 수 있습니다. 또 다른 빠른 방법은 텍스트 블록의 안쪽 여백을 설정하는 것입니다.

<TextBlock Height="22" Padding="3" />


답변

TextBlock은 세로 텍스트 정렬을 지원하지 않습니다.

텍스트 블록을 그리드로 감싸고 HorizontalAlignment = “Stretch”및 VerticalAlignment = “Center”를 설정하여이 문제를 해결합니다.

이처럼 :

<Grid>
    <TextBlock 
        HorizontalAlignment="Stretch"
        VerticalAlignment="Center"
        Text="Your text" />
</Grid>


답변

텍스트 블록 대신 레이블을 사용할 수 있습니다.

<Label Content="Hello, World!">
    <Label.LayoutTransform>
        <RotateTransform Angle="270"/>
    </Label.LayoutTransform>
</Label>


답변

텍스트 줄 바꿈 없이 할 수 있다면 TextBlock을 Label로 바꾸는 것이 가장 간결한 방법이라고 생각합니다. 그렇지 않으면 다른 유효한 답변 중 하나를 따르십시오.

<Label Content="Some Text" VerticalAlignment="Center"/>


답변

TextBlock내용의 수직 정렬을 지원하지 않습니다. 사용해야하는 경우 TextBlock부모를 기준으로 정렬 해야합니다 .

그러나 Label대신 사용할 수 있고 기능이 매우 유사한 경우 텍스트 내용을 배치 할 수 있습니다 .

<Label VerticalContentAlignment="Center" HorizontalContentAlignment="Center">
   I am centred text!
</Label>

Label기본적으로 경계를 채우도록 확장되므로 레이블의 텍스트가 가운데에 배치됩니다.


답변

나를 VerticalAlignment="Center"위해이 문제를 해결하십시오.
이것은 TextBlock그리드에 싸여 있기 때문에 가능 하지만 실제로 wpf의 모든 것입니다.