Aracılığıyla paylaş


Text bloğu

Text bloğu, uygulamalarda salt okunur metin görüntülemeye yönelik birincil denetimdir. Tek satırlı veya çok satırlı metin, satır içi köprüler ve kalın, italik veya altı çizili gibi biçimlendirmeye sahip metinleri görüntülemek için bunu kullanabilirsiniz.

Doğru kontrol bu mu?

Metin bloğunun kullanımı genellikle daha kolaydır ve zengin metin bloğundan daha iyi metin işleme performansı sağlar, bu nedenle çoğu uygulama kullanıcı arabirimi metni için tercih edilir. Text özelliğinin değerini alarak uygulamanızdaki bir metin bloğundaki metne kolayca erişebilir ve bunları kullanabilirsiniz. Ayrıca, metninizin nasıl işlendiğini özelleştirmek için aynı biçimlendirme seçeneklerinin çoğunu sağlar.

Metne satır sonları koyabilirsiniz ancak metin bloğu tek bir paragrafı görüntüleyecek şekilde tasarlanmıştır ve metin girintisini desteklemez. Birden çok paragraf, çok sütunlu metin veya diğer karmaşık metin düzenleri ya da resimler gibi satır içi kullanıcı arabirimi öğeleri için desteğe ihtiyacınız olduğunda RichTextBlock kullanın.

Doğru metin denetimini seçme hakkında daha fazla bilgi için Text denetimleri makalesine bakın.

Metin bloğu oluşturma

WinUI 3 Galerisi uygulaması çoğu WinUI 3 denetimine, özelliğine ve işlevselliğine ilişkin etkileşimli örnekler içerir. Uygulamayı Microsoft Store üzerinden alın veya kaynak kodunu GitHub üzerinden edinin.

Basit bir TextBlock denetimi tanımlama ve Text özelliğini bir dize olarak ayarlama burada açık bir şekilde gösterilmiştir.

<TextBlock Text="Hello, world!" />
TextBlock textBlock1 = new TextBlock();
textBlock1.Text = "Hello, world!";

İçerik modeli

bir TextBlockiçerik eklemek için kullanabileceğiniz iki özellik vardır: Text ve Inlines.

Metni görüntülemenin en yaygın yolu, önceki örnekte gösterildiği gibi Text özelliğini bir dize değerine ayarlamaktır.

Bunun gibi Inlines özelliğine satır içi akış içerik öğeleri yerleştirerek de içerik ekleyebilirsiniz. (Inlines bir TextBlockvarsayılan içerik özelliğidir, bu nedenle bunu XAML'ye açıkça eklemeniz gerekmez.)

<TextBlock>Text can be <Bold>bold</Bold>, <Underline>underlined</Underline>, 
    <Italic>italic</Italic>, or a <Bold><Italic>combination</Italic></Bold>.</TextBlock>

Bold, Italic, Run, Spanve LineBreakgibi Inline sınıfından türetilen öğeler, metnin farklı bölümleri için farklı biçimlendirmeyi etkinleştirir. Daha fazla bilgi için Biçimlendirme metni bölümüne bakın. Satır içi Köprü öğesi, metninize köprü eklemenize olanak tanır. Ancak, Inlines kullanmak, sonraki bölümde ele alınan hızlı yol metin işlemeyi de devre dışı bırakır.

Performansla ilgili dikkat edilmesi gerekenler

Mümkün olduğunda XAML, metni düzenlemek için daha verimli bir kod yolu kullanır. Bu hızlı yol hem genel bellek kullanımını azaltır hem de metin ölçme ve düzenleme için CPU süresini büyük ölçüde azaltır. Bu hızlı yol yalnızca TextBlockiçin geçerlidir, bu nedenle RichTextBlockyerine mümkün olduğunda tercih edilmelidir.

Bazı koşullar, TextBlock metin işleme için daha zengin ve CPU yoğunluklu bir kod yoluna geri dönmesini gerektirir. Metin işlemeyi hızlı yolda tutmak için, burada listelenen özellikleri ayarlarken bu yönergeleri izlediğinden emin olun.

  • Text: En önemli koşul, hızlı yolun yalnızca XAML'de veya kodda (önceki örneklerde gösterildiği gibi) Text özelliğini açıkça ayarlayarak metin ayarladığınızda kullanılmasıdır. TextBlock'nin Inlines koleksiyonu (<TextBlock>Inline text</TextBlock>gibi) aracılığıyla metin ayarlanması, birden çok biçimin olası karmaşıklığı nedeniyle hızlı yolu devre dışı bırakır.
  • CharacterSpacing: Yalnızca varsayılan 0 değeri hızlı yoldur.
  • TextTrimming : Yalnızca None, CharacterEllipsisve WordEllipsis değerleri hızlı yoldadır. Clip değeri hızlı yolu devre dışı bırakır.

Not

Yalnızca UWP : Windows 10, sürüm 1607'den önce ek özellikler de hızlı yolu etkiledi. Uygulamanız Windows'un önceki bir sürümünde çalıştırılıyorsa, bu koşullar metninizin yavaş yolda işlenmesine neden olur. Sürümler hakkında daha fazla bilgi için bkz. Sürüm uyarlamalı kodu.

  • Tipografi: Yalnızca çeşitli Typography özellikleri için varsayılan değerler hızlı yoldur.
  • LineStackingStrategy: LineHeight 0 değilse, BaselineToBaseline ve MaxHeight değerleri hızlı yolu devre dışı bırakır.
  • IsTextSelectionEnabled: Yalnızca false hızlı yoldur. Bu özelliği true olarak ayarlamak hızlı yolu devre dışı bırakır.

DebugSettings.IsTextPerformanceVisualizationEnabled özelliğini hata ayıklama sırasında true olarak ayarlayarak metnin hızlı yol işleme kullanıp kullanmadığını belirleyebilirsiniz. Bu özellik trueolarak ayarlandığında, hızlı yolda bulunan metin parlak yeşil renkte görüntülenir.

Hata ayıklama ayarlarını genellikle OnLaunched yöntemi, App.xamliçin kod-arkasında sayfasında şu şekilde geçersiz kılarsınız.

protected override void OnLaunched(LaunchActivatedEventArgs e)
{
#if DEBUG
    if (System.Diagnostics.Debugger.IsAttached)
    {
        this.DebugSettings.IsTextPerformanceVisualizationEnabled = true;
    }
#endif

// ...

}

Bu örnekte, ilk TextBlock hızlı yol kullanılarak işlenirken, ikincisi aynı şekilde işlenmez.

<StackPanel>
    <TextBlock Text="This text is on the fast path."/>
    <TextBlock>This text is NOT on the fast path.</TextBlock>
<StackPanel/>

Bu XAML'yi hata ayıklama modunda çalıştırdığınızda ve IsTextPerformanceVisualizationEnabledtrueolarak ayarlandığında sonuç böyle görünür.

hata ayıklama modunda işlenen Text

Dikkat

Hızlı yolda olmayan metnin rengi değiştirilmez. Uygulamanızda rengi parlak yeşil olarak belirtilen bir metniniz varsa, daha yavaş işleme yolundayken de parlak yeşil renkte görüntülenir. Uygulamada yeşil olarak ayarlanmış metinleri, hata ayıklama ayarları nedeniyle hızlı yolda olan ve yine bu yüzden yeşil görünen metinlerle karıştırmamak için dikkatli olun.

Metni biçimlendirme

Text özelliği düz metin depolasa da, metnin uygulamanızda nasıl işlendiğini özelleştirmek için TextBlock denetimine çeşitli biçimlendirme seçenekleri uygulayabilirsiniz. Metnin görünümünü değiştirmek için FontFamily, FontSize, FontStyle, Ön Planve CharacterSpacing gibi standart denetim özelliklerini ayarlayabilirsiniz. Metninizi biçimlendirmek için satır içi metin öğelerini ve Tipografi ekli özellikleri de kullanabilirsiniz. Bu seçenekler yalnızca TextBlock metni yerel olarak nasıl görüntülediğini etkiler, dolayısıyla metni kopyalayıp zengin bir metin denetimine yapıştırırsanız, örneğin biçimlendirme uygulanmaz.

Not

Önceki bölümde belirtildiği gibi, satır içi metin öğelerinin ve varsayılan olmayan tipografi değerlerinin hızlı yolda işlenmediğini unutmayın.

Inline öğeleri

Microsoft.UI.Xaml.Documents ad alanı, metninizi biçimlendirmek için kullanabileceğiniz Bold, Italic, Run, Spanve LineBreakgibi çeşitli satır içi metin öğeleri sağlar.

Bir dizi dizeyi, her bir dize farklı biçimlendirmeye sahip olacak şekilde bir TextBlockiçinde gösterebilirsiniz. Her dizeyi biçimlendirmesiyle görüntülemek için bir Run öğesi kullanarak ve her Run öğesini bir LineBreak öğesiyle ayırarak bunu yapabilirsiniz.

İşte, bir LineBreakile ayrılmış Run nesnelerini kullanarak bir TextBlock içinde birkaç farklı biçimlendirilmiş metin dizisini nasıl tanımlayacağınız.

<TextBlock FontFamily="Segoe UI" Width="400" Text="Sample text formatting runs">
    <LineBreak/>
    <Run Foreground="Gray" FontFamily="Segoe UI Light" FontSize="24">
        Segoe UI Light 24
    </Run>
    <LineBreak/>
    <Run Foreground="Teal" FontFamily="Georgia" FontSize="18" FontStyle="Italic">
        Georgia Italic 18
    </Run>
    <LineBreak/>
    <Run Foreground="Black" FontFamily="Arial" FontSize="14" FontWeight="Bold">
        Arial Bold 14
    </Run>
</TextBlock>

Sonuç şu şekildedir.

Text çalıştırma öğeleriyle biçimlendirilmiş

Tipografi

Tipografi sınıfının ekli özellikleri, bir dizi Microsoft OpenType tipografi özelliğine erişim sağlar. Bu ekli özellikleri TextBlockveya tek tek satır içi metin öğelerinde ayarlayabilirsiniz. Bu örneklerde her ikisi de gösterilir.

<TextBlock Text="Hello, world!"
           Typography.Capitals="SmallCaps"
           Typography.StylisticSet4="True"/>
TextBlock textBlock1 = new TextBlock();
textBlock1.Text = "Hello, world!";
Typography.SetCapitals(textBlock1, FontCapitals.SmallCaps);
Typography.SetStylisticSet4(textBlock1, true);
<TextBlock>12 x <Run Typography.Fraction="Slashed">1/3</Run> = 4.</TextBlock>

UWP ve WinUI 2

Önemli

Bu makaledeki bilgiler ve örnekler, Windows Uygulama SDK'sı ve WinUI 3kullanan uygulamalar için iyileştirilmiştir, ancak genellikle WinUI 2kullanan UWP uygulamaları için geçerlidir. Platforma özgü bilgiler ve örnekler için UWP API başvurusuna bakın.

Bu bölüm, denetimi bir UWP veya WinUI 2 uygulamasında kullanmak için ihtiyacınız olan bilgileri içerir.

Bu denetimin API'leri Windows.UI.Xaml.Controls ad alanında bulunur.

Tüm denetimler için en güncel stilleri, şablonları ve özellikleri almak için en son WinUI 2 kullanmanızı öneririz.