¿Nueva línea en una etiqueta WPF?

83

¿Cómo puedo agregar una nueva línea en el texto de una etiqueta en WPF como la siguiente?

<Label>Lorem 
  ipsum</Label>
Natrio
fuente

Respuestas:

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

Debe usar TextBlock porque TextBlock acepta como elementos secundarios una colección de objetos Inline. Así que le está dando al elemento TextBlock tres elementos en línea: Run Text = "Lorem", LineBreak y Run Text = "ipsum".

No puedes hacer lo siguiente:

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

porque una etiqueta acepta un elemento secundario de contenido.

Además, no estoy seguro de cuál es exactamente su caso de uso, pero observe que coloqué un TextBlock dentro de su elemento Label. ¿Es repetitivo? Realmente no, dependiendo de su necesidad. Aquí hay un buen artículo sobre las diferencias entre los dos elementos: Diferencia entre Label y TextBlock

Szymon Rozga
fuente
1
Cuando probé la respuesta anterior, recibí un error por tener una etiqueta en el medio de mi contenido. En su lugar, usé esto: <TextBlock> <Run>First</Run> <LineBreak/> <Run>Second</Run> </TextBlock>
Patógeno
3
Esto funciona muy bien pero no es útil cuando se usa la localización. En ese caso, useLorem&#x0a;Ipsum
stijn
103

en WPF puede usar el valor "&#10;"o"&#xA;"

Por ejemplo:

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

("10" es el número ASCII para nueva línea)

o

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

("A" es el número ASCII para nueva línea en hexadecimal)

Ejemplo, con una etiqueta de borde alrededor para mostrar el límite

00jt
fuente
3
De acuerdo, esta debería ser la respuesta aceptada. Es más elegante y sencillo de usar.
Tyler C
10

Al hacer esto en ViewModel o Model, descubrí que usar Environment.NewLine tiene el resultado más consistente, incluida la localización. También debería funcionar directamente en la Vista, pero no lo he probado.

Ejemplo:

En la vista

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

En ViewModel:

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

Un ejemplo de cómo agregar una información sobre herramientas con varias líneas a un control, como un botón. La información sobre herramientas tiene un ancho limitado, por lo que se ajustará si una oración es demasiado ancha.

<!-- 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>

Probado en VS2019 + .NET 4.6.1 + WPF.

Aplazamiento de pago
fuente
1
<Label xml:space="preserve">text content
another line</Label>

parece funcionar también

Karl
fuente