Newline in un'etichetta WPF?
Domanda
Come posso aggiungere una nuova riga nel testo di un'etichetta in WPF come la seguente?
<Label>Lorem
ipsum</Label>
Soluzione
<Label><TextBlock>Lorem<LineBreak/>ipsum</TextBlock></Label>
Devi usare TextBlock perché TextBlock accetta come figli una raccolta di oggetti Inline. Quindi stai dando all'elemento TextBlock tre elementi Inline: Run Text = & Quot; Lorem & Quot ;, LineBreak ed Run Text = & Quot; ipsum & Quot ;.
Non puoi fare quanto segue:
<Label>Lorem<LineBreak/>ipsum</Label>`
perché un'etichetta accetta un elemento figlio di contenuto.
Inoltre, non sono sicuro di quale sia il tuo caso d'uso, ma noti che ho inserito un TextBlock all'interno dell'elemento Label. È ripetitivo? Non proprio, a seconda delle tue necessità. Ecco un buon articolo sulle differenze tra i due elementi: Differenza tra Label e TextBlock
Altri suggerimenti
in WPF è possibile utilizzare il valore " "
o "
"
Ad esempio:
<Label Content="Lorem ipsum" />
(" 10 " è il numero ASCII per newline)
o
<Label Content="Lorem
ipsum" />
(" A " è il numero ASCII per newline in esadecimale)
Nel fare questo nel ViewModel o nel Modello, ho scoperto che l'uso di Environment.NewLine ha il risultato più coerente, inclusa la localizzazione. Dovrebbe funzionare direttamente anche nella vista, ma non l'ho provato.
Esempio:
Nella vista
<Label Content="{Binding SomeStringObject.ParameterName}" />
Nel ViewModel:
SomeStringObject.ParameterName = "First line" + Environment.NewLine + "Second line";