WPF 레이블의 줄 바꿈?


83

WPF의 레이블 텍스트에 다음과 같은 줄 바꿈을 어떻게 추가 할 수 있습니까?

<Label>Lorem 
  ipsum</Label>

답변:


116
<Label><TextBlock>Lorem<LineBreak/>ipsum</TextBlock></Label>

TextBlock은 Inline 개체의 컬렉션을 자식으로 허용하므로 TextBlock을 사용해야합니다. 따라서 TextBlock 요소에 Run Text = "Lorem", LineBreak 및 Run Text = "ipsum"의 세 가지 인라인 항목을 제공합니다.

다음을 수행 할 수 없습니다.

<Label>Lorem<LineBreak/>ipsum</Label>`

라벨은 하나의 콘텐츠 하위 요소를 허용하기 때문입니다.

또한 사용 사례가 정확히 무엇인지 확실하지 않지만 Label 요소 내부에 TextBlock을 배치했습니다. 반복적입니까? 필요에 따라 실제로는 아닙니다. 다음은 두 요소의 차이점에 대한 좋은 기사입니다. Label과 TextBlock의 차이점


1
위의 답변을 시도했을 때 콘텐츠 중간에 태그가 있다는 오류가 발생했습니다. 대신 저는 이것을 사용했습니다 : <TextBlock> <Run>First</Run> <LineBreak/> <Run>Second</Run> </TextBlock>
Pathogen

3
이것은 훌륭하게 작동하지만 현지화를 사용할 때는 유용하지 않습니다. 이 경우 사용Lorem&#x0a;Ipsum
stijn

103

WPF에서는 값을 사용 "&#10;"하거나"&#xA;"

예를 들면 :

<Label Content="Lorem&#10;ipsum" />

( "10"은 줄 바꿈의 ASCII 번호입니다.)

또는

<Label Content="Lorem&#xA;ipsum" />

( "A"는 16 진 줄 바꿈에 대한 ASCII 숫자입니다.)

예, 경계를 표시하는 테두리 레이블이있는 경우


3
이것이 허용되는 대답이어야한다는 데 동의했습니다. 더 우아하고 사용하기 쉽습니다.
Tyler C

10

ViewModel 또는 Model에서이 작업을 수행 할 때 Environment.NewLine을 사용하면 지역화를 포함하여 가장 일관된 결과가 나타납니다. 보기에서도 직접 작동하지만 테스트하지는 않았습니다.

예:

보기에서

<Label Content="{Binding SomeStringObject.ParameterName}" />

ViewModel에서 :

SomeStringObject.ParameterName = "First line" + Environment.NewLine + "Second line";

2

단추와 같은 컨트롤에 여러 줄이있는 도구 설명을 추가하는 방법의 예입니다. 툴팁은 너비가 제한되어 있으므로 문장이 너무 넓 으면 줄 바꿈됩니다.

<!-- Button would need some properties to make it clickable.-->
<Button>
   <Button.ToolTip>
      <TextBlock Text="Line 1&#x0a;Line 2" MaxWidth="300" TextWrapping="Wrap"/>
    </Button.ToolTip>
</Button>

VS2019 + .NET 4.6.1 + WPF에서 테스트되었습니다.


1
<Label xml:space="preserve">text content
another line</Label>

너무 작동하는 것 같습니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.