web-dev-qa-db-fra.com

Newline dans un label WPF?

Comment puis-je ajouter une nouvelle ligne dans le texte d'une étiquette dans WPF telle que celle-ci?

<Label>Lorem 
  ipsum</Label>
80
Natrium
<Label><TextBlock>Lorem<LineBreak/>ipsum</TextBlock></Label>

Vous devez utiliser TextBlock car TextBlock accepte en tant qu'enfants une collection d'objets Inline. Donc, vous donnez à l'élément TextBlock trois éléments Inline: Run Text = "Lorem", LineBreak et Run Text = "ipsum". 

Vous ne pouvez pas faire ce qui suit:

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

car une étiquette accepte un élément enfant de contenu.

En outre, vous ne savez pas exactement quel est votre cas d'utilisation, mais remarquez que j'ai placé un TextBlock dans votre élément Label. Est-ce répétitif? Pas vraiment, selon vos besoins. Voici un bon article sur les différences entre les deux éléments: Différence entre Label et TextBlock

112
Szymon Rozga

dans WPF, vous pouvez utiliser la valeur "&#10;" ou "&#xA;"

Par exemple:

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

("10" est le numéro ASCII pour la nouvelle ligne)

ou

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

("A" est le numéro ASCII de la nouvelle ligne en hexadécimal)

Example, with a border arround label to show boundry

86
00jt

En effectuant cette opération dans le modèle ou le modèle, j'ai constaté que l'utilisation de Environment.NewLine avait le résultat le plus cohérent, y compris la localisation. Cela devrait également fonctionner directement dans la vue, mais je ne l’ai pas testé.

Exemple: 

Dans la vue

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

Dans le ViewModel:

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

Je comprends que les nouvelles lignes fonctionnent dans un bloc de texte. Toutefois, si vous voulez une nouvelle ligne dans une étiquette, comme le dit la question, utilisez-la dans votre chaîne. J'ai des espaces entre les deux parce que sinon cela ne me permettra pas de poster la séquence dans ce commentaire . & # X a; Utilisez ces 5 caractères ensemble sans espaces pour obtenir la nouvelle ligne que vous recherchez.

0
Scott Jasin