Aşağıdakiler gibi WPF'de bir etiket metnine nasıl yeni satır ekleyebilirim?
<Label>Lorem
ipsum</Label>
Yanıtlar:
<Label><TextBlock>Lorem<LineBreak/>ipsum</TextBlock></Label>
TextBlock alt öğe olarak Inline nesnelerinin bir koleksiyonunu kabul ettiği için TextBlock'u kullanmanız gerekir. Yani TextBlock öğesine üç Satır İçi öğe veriyorsunuz: Run Text = "Lorem", LineBreak ve Run Text = "ipsum".
Aşağıdakileri yapamazsınız:
<Label>Lorem<LineBreak/>ipsum</Label>`
çünkü bir etiket bir içerik alt öğesini kabul eder.
Ayrıca, kullanım durumunuzun tam olarak ne olduğundan emin değilim, ancak Etiket öğenizin içine bir TextBlock yerleştirdiğime dikkat edin. Tekrarlayan mı? İhtiyacınıza bağlı olarak pek değil. İşte iki öğe arasındaki farklarla ilgili güzel bir makale: Label ve TextBlock arasındaki fark
Lorem
Ipsum
WPF'de değeri " "
veya"
"
Örneğin:
<Label Content="Lorem ipsum" />
("10" satırsonu için ASCII numarasıdır)
veya
<Label Content="Lorem
ipsum" />
("A", onaltılık satırdaki satırsonu için ASCII numarasıdır)
Bunu ViewModel veya Modelde yaparken, Environment.NewLine'ı kullanmanın yerelleştirme dahil en tutarlı sonuca sahip olduğunu gördüm. Doğrudan Görünümde de çalışması gerekir, ancak bunu test etmedim.
Misal:
Görünümde
<Label Content="{Binding SomeStringObject.ParameterName}" />
ViewModel'de:
SomeStringObject.ParameterName = "First line" + Environment.NewLine + "Second line";
Düğme gibi bir kontrole birden çok satır içeren bir Araç İpucu eklemenin bir örneği. Araç ipucu genişliği sınırlıdır, bu nedenle bir cümle çok genişse kaydırılır.
<!-- Button would need some properties to make it clickable.-->
<Button>
<Button.ToolTip>
<TextBlock Text="Line 1
Line 2" MaxWidth="300" TextWrapping="Wrap"/>
</Button.ToolTip>
</Button>
VS2019 + .NET 4.6.1 + WPF'de test edilmiştir.
<TextBlock> <Run>First</Run> <LineBreak/> <Run>Second</Run> </TextBlock>