WPF etiketinde yeni satır mı?


86

Aşağıdakiler gibi WPF'de bir etiket metnine nasıl yeni satır ekleyebilirim?

<Label>Lorem 
  ipsum</Label>

Yanıtlar:


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


1
Yukarıdaki cevabı denediğimde, içeriğimin ortasında bir etiket olmasıyla ilgili bir hata aldım. Bunun yerine şunu kullandım: <TextBlock> <Run>First</Run> <LineBreak/> <Run>Second</Run> </TextBlock>
Pathogen

4
Bu harika çalışıyor ancak yerelleştirme kullanılırken kullanışlı değil. Bu durumda kullanınLorem&#x0a;Ipsum
stijn

107

WPF'de değeri "&#10;"veya"&#xA;"

Örneğin:

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

("10" satırsonu için ASCII numarasıdır)

veya

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

("A", onaltılık satırdaki satırsonu için ASCII numarasıdır)

Örnek, sınırları göstermek için bir sınır çevresi etiketi ile


3
Kabul edilen cevap bu olmalıdır. Daha zarif ve kullanımı daha basit.
Tyler C

10

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";

2

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&#x0a;Line 2" MaxWidth="300" TextWrapping="Wrap"/>
    </Button.ToolTip>
</Button>

VS2019 + .NET 4.6.1 + WPF'de test edilmiştir.


2
<Label xml:space="preserve">text content
another line</Label>

işe yarıyor gibi görünüyor

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.