2011-05-04 8 views
3

안녕 얘들 아, 캔버스의 자식 인 TextBlock의 TextAlignment를 구성하려고합니다. 그리드에서 TextAlignment가 작동하지만 캔버스에서 을 센터로 설정할 수 없다는 것을 알게되었습니다.캔버스가 TextBlock의 TextAlignment 값을 덮어 씁니다.

누군가가이 주제에 대해 도움을 줄 수 있었으면 좋겠습니다.

감사

답변

2

상대적으로 쉬운 해결책은 폭 StackPanel에에 TextBlock의 포장 및 센터에있는 TextBlock의 HorizontalAlignment로 설정하는 것입니다. 이렇게하면 StackPanel의 텍스트가 가운데에 배치됩니다.

너비는 중요한 부분입니다. Width가 없으면 TextBlock은 공간이 얼마나 있는지 알 수 없으므로 TextBlock 자체를 중심에 두는 방법을 알지 못합니다.

1

Canvas는 항상 자식 요소를 "원하는 크기"로 지정합니다. 따라서 TextBlock의 텍스트를 표시하는 데 100 픽셀 너비가 필요한 경우 Canvas는 정확하게 100 픽셀을 제공합니다. 반면에 Grid는 TextBlock이있는 열/행에 따라 TextBlock에 더 많은 공간을 줄 수 있습니다.

텍스트 줄 (예 : 줄 바꿈 없음)의 경우 TextAlignment가 실행되는 유일한 시간은 TextBlock에 필요한 것보다 많은 공간 (또는 TextWrapping이 활성화 된 경우 적은 공간)이 필요할 때.

여러 줄의 텍스트 (또는 한 줄짜리 텍스트의 경우)의 경우 TextAlignment는 해당 텍스트를 TextBlock의 경계와 정렬합니다.

Canvas는 TextBlock을 강제로 감싸지 않으므로 TextAlignment가 재생되는 유일한 시간은 텍스트 줄이 여러 개인 경우입니다.

<Canvas Width="300" Height="50"> 
    <TextBlock Canvas.Top="0" TextAlignment="Center"> 
     This will not center 
    </TextBlock> 
    <TextBlock Canvas.Top="25" TextAlignment="Center"> 
     This will center the shorter<LineBreak />lines of text 
    </TextBlock> 
</Canvas> 
관련 문제