Nouvelle ligne dans une étiquette WPF?
Question
Comment puis-je ajouter une nouvelle ligne dans le texte d'une étiquette dans WPF telle que celle-ci?
<Label>Lorem
ipsum</Label>
La solution
<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 effectuer les opérations suivantes:
<Label>Lorem<LineBreak/>ipsum</Label>`
car une étiquette accepte un élément enfant de contenu.
De plus, 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
Autres conseils
dans WPF, vous pouvez utiliser la valeur " "
ou "
"
Par exemple:
<Label Content="Lorem ipsum" />
(& "10 &" est le numéro ASCII de la nouvelle ligne)
ou
<Label Content="Lorem
ipsum" />
(& "A &" est le numéro ASCII de la nouvelle ligne au format hexadécimal)
En effectuant cette opération dans le modèle ou le modèle, j'ai constaté que l'utilisation de Environment.NewLine produisait le résultat le plus cohérent, y compris la localisation. Cela devrait également fonctionner directement dans la vue, mais je n’ai pas testé cela.
Exemple:
Dans la vue
<Label Content="{Binding SomeStringObject.ParameterName}" />
Dans le ViewModel:
SomeStringObject.ParameterName = "First line" + Environment.NewLine + "Second line";