Biçimli Metin

July 15, 2026 · View on GitHub

Tek bir Label içinde farklı font, renk, boyut veya dokunma aksiyonlarını karıştırmak için FormattedText ile Span'ları kullanın — XAML'deki <Label.FormattedText> bloğunun C# karşılığı, tamamen fluent.

Temel Kullanım

new Label()
    .FormattedText(
        new FormattedString()
        .Spans(
            new Span().Text("Toplam: "),
            new Span()
                .Text("₺49,90")
                .FontAttributes(FontAttributes.Bold)
                .TextColor(Colors.SeaGreen),
            new Span()
                .Text("  (KDV dahil)")
                .FontSize(11)
                .TextColor(Colors.Gray)
        )
    )

FormattedString.Spans(...) span'ları params olarak alır; her Span tam fluent özellik setini destekler:

Span metoduAmaç
.Text(string)Segment metni (bindable — builder lambda çalışır)
.TextColor(Color) / .BackgroundColor(Color)Renkler
.FontSize(double) / .FontFamily(string) / .FontAttributes(...)Tipografi
.TextDecorations(...)Altı çizili / üstü çizili
.CharacterSpacing(double) / .LineHeight(double)Boşluk
.TextTransform(...)Harf durumu
.Style(Style)Span hedefli stil

Span İçinde Binding'ler

Span'lar BindableObject'tir — property builder her zamanki gibi çalışır:

new Label()
    .FormattedText(
        new FormattedString()
        .Spans(
            new Span().Text("Merhaba, "),
            new Span()
                .Text(e => e.Path("UserName"))
                .FontAttributes(FontAttributes.Bold),
            new Span().Text("!")
        )
    )

Tıklanabilir Span'lar (satır içi bağlantılar)

Span bir GestureElement'tir; jest tanıyıcılar tek tek segmentlere takılır — standart "kullanım şartları" deseni:

new Label()
    .FormattedText(
        new FormattedString()
        .Spans(
            new Span().Text("Şunları kabul ediyorum: "),
            new Span()
                .Text("kullanım şartları")
                .TextColor(Colors.Blue)
                .TextDecorations(TextDecorations.Underline)
                .GestureRecognizers(
                    new TapGestureRecognizer()
                        .OnTapped((s, e) => Browser.OpenAsync("https://example.com/tos"))
                ),
            new Span().Text(".")
        )
    )

Yeniden Kullanılabilir Yardımcılar

Her şey C# olduğundan yaygın kalıpları sarın:

static Span Bold(string text) => new Span().Text(text).FontAttributes(FontAttributes.Bold);
static Span Link(string text, Action onTap) =>
    new Span()
        .Text(text)
        .TextColor(Colors.Blue)
        .TextDecorations(TextDecorations.Underline)
        .GestureRecognizers(new TapGestureRecognizer().OnTapped((s, e) => onTap()));

new Label().FormattedText(new FormattedString().Spans(
    new Span().Text("Şunu okuyun: "),
    Link("dokümanlar", () => OpenDocs()),
    new Span().Text(" veya "),
    Bold("örnekler"),
    new Span().Text(".")
));

Ne Zaman Ne Kullanmalı?

İhtiyaçAraç
Tek biçimli metinLabel.Text
Tek paragrafta karışık stil / satır içi bağlantıFormattedText + Span'lar (bu sayfa)
Her parça için ayrı yerleşimHorizontalStackLayout içinde birden çok Label
Büyük zengin/HTML içerikLabel.TextType(TextType.Html) veya WebView

İlgili Konular