2012-02-14 3 views
1

여러 TextBlock이 가로 방향으로 StackPanel에 배치되어있는 경우 하나의 TextBlock 인 것처럼 보일 것입니다.TextBlock 내부 여백

enter image description here

첫 번째 줄은 "EEEE"을 표시하는 TextBlock의이다 : 그러나 나는 다음과 같은 발견했다. 두 번째는 StackPanel이며 4 개의 TextBlock을 포함하고 각 TextBlock에는 "e"가 포함됩니다. 위의 그림에서 알 수 있듯이 두 번째 줄은 첫 번째 줄보다 약간 길다. TextBlock에 내부 여백이있는 것 같습니다. 하지만, 제 경우에는 그것을 막고 싶습니다. 그래서 어떻게 할 수 있는지 알고 있습니까?

답변

1

TextBlockPaddingMargin을 0으로 설정해보십시오.

<TextBlock Padding="0" Margin="0" ... /> 

당신은이 작업을 수행 할 것 여러 textblocks을 가지고 있기 때문에, 당신은 가능성이 사용 Style가이 일을해야한다.

<StackPanel Orientation="Horizontal"> 
    <Style TargetType="TextBlock"> 
     <Setter Property="Padding" Value="0" /> 
     <Setter Property="Margin" Value="0" /> 
    </Style> 

    ... 
</StackPanel> 

이 도움이되지 않는 경우에, 당신은 부정적인 여백을 사용하여 시작할 수 : 텍스트 사이의 간격이 글꼴 크기 및 텍스트에 의존하기 때문에,

Margin="-1,0,0,0" 

그러나이 코드에 취성이 소개를 표시됩니다. 예를 들어, 글꼴 크기를 13으로 변경하면 더 이상 5 개의 소문자 'e'와 함께이 문제가 발생하지 않습니다. 텍스트를 대문자 'E'로 변경하면 동일한 문제가 발생합니다.

TextBlock의 클리핑 속성을 사용하거나 렌더링 효과를 사용해 볼 수도 있지만 텍스트를 몇 픽셀 만 조정하면 많은 효과를 얻을 수 있습니다. 왜 두 개의 텍스트 샘플을 동일하게 보이게하려고하는지 묻고 싶습니다.

업데이트 :가 나는 당신이 일 당신이 원하는 방식으로 만들 수있는 좋은 방법을 찾을 수 있습니다 의문입니다. RichTextBox을 사용하거나 사용자 지정 컨트롤을 만드는 방법을 살펴 보시기 바랍니다.

Here은 텍스트 강조 표시가있는 RichTextBox의 좋은 예입니다 (전경 강조 표시 임).

+0

도움이되지 않았습니다 ... – andrew

+0

흠, 생각보다 복잡해 보입니다. 일부 의견으로 내 대답을 업데이트했습니다. –

+0

내가하고있는 이유는 일부 개별 부분을 강조 표시 할 수있는 HighlightedTextBlock 컨트롤을 구현하고 있다는 것입니다 (highligtighting은 전경이 아닌 배경색을 변경한다는 의미입니다). 그리고 일부는 항목 템플릿에 사용됩니다 listbox를 선택하면 항목이 동적으로 강조 표시되어 검색된 텍스트를 표시합니다. 일부 글꼴 크기의 경우 (텍스트 사이의 간격은 글꼴 크기와 표시된 텍스트에 따라 다름) 검색된 텍스트가 변경 될 때 항목의 일부가 이동한다는 것이 실제로 눈에.니다. – andrew