TextBlock elementi

TextBlock elementi

@CSharp_N1

TextBlock-ni boshqaruv elementi deb atash noto‘g‘ri bo‘ladi, chunki u o'zi Control sinfini meros qilib olmaydi, lekin u WPF-dagi boshqa "boshqaruv" elementlar singari ishlatiladi, shuning uchun soddalik uchun TextBlock ni boshqaruv elementi deb ataylik.

TextBlock elementi WPF-dagi eng asosiy elementlardan biri hisoblanadi, chunki uni ishlatish juda qulay. Bu sizga yorliq singari matnni ekranga joylashtirishga imkon beradi, ammo shu bilan birga ulardan foydalanish oson va resurslarga talabchan emas. Umuman olganda Label - bu qisqa bir satrli matn (lekin, rasmni yoki boshqa content ni o'z ichiga olishi mumkin), TextBlock ham ko'p satrli matn bilan yaxshi ishlaydi, lekin faqat matn (satr) dan iborat bo'lishi mumkin. Label ning ham, TextBlock ning o'ziga xos kuchli tomonlari mavjud, ammo qaysi birini tanlashingiz vaziyatga bog'liq.

Biz allaqachon TextBlock-ni Hello, WPF! darsida ishlatganmiz, hozir ushbu elementni eng sodda ko'rinishda ko'rib chiqamiz:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="TextBlockSample" Height="100" Width="200">
<Grid>
<TextBlock>This is a TextBlock</TextBlock>
</Grid>
</Window>

Bu qanday yozilgan bo'lsa, shuncha oson va agar siz darsning boshini o'qigan bo'lsangiz, unda printsipial ravishda bu erda yangi narsa topa olmaysiz. Boshlash va tugatish teglari orasidagi matn - bu TextBlock ning Text xossasini aniqlashning soddalashtirilgan usuli.
Keyingi misol uchun keling, uzunroq matnni chop etamiz va TextBlock uni qanday ishlashini ko'rib chiqamiz. Bundan tashqari, yanada aniqroq ko'rinish uchun Margin xossasiga ham 10 qiymat beramiz:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="TextBlockSample" Height="100" Width="200">
<Grid>
<TextBlock Margin="10">This is a TextBlock control and it comes with a very long text</TextBlock>
</Grid>
</Window>

Katta matnlar bilan ishlash


Yuqoridagi skrinshotda TextBlock uzun va ko'p satrli matnlarni yaxshi ishlashini bilishimiz mumkin, ammo afsuski u odatdagi holatda moslashmagan holda bo‘ladi. Bunday holda, matn oynaga sig‘gan qismi ko'rsatiladi, qolgan qismi shunchaki ko‘rsatilmaydi.
Yaxshiyamki, ushbu muammoni hal qilishning bir necha yo'li mavjud. Quyidagi misolda ularning barchasini ko‘rib chiqamiz va keyinchalik har birining ishlashini tushuntirib beraman:

<Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="TextBlockSample" Height="200" Width="250">
<StackPanel>
<TextBlock Margin="10" Foreground="Red">
This is a TextBlock control<LineBreak />
with multiple lines of text.
</TextBlock>
<TextBlock Margin="10" TextTrimming="CharacterEllipsis" Foreground="Green">
This is a TextBlock control with text that may not be rendered completely, which will be indicated with an ellipsis.
</TextBlock>
<TextBlock Margin="10" TextWrapping="Wrap" Foreground="Blue">
This is a TextBlock control with automatically wrapped text, using the TextWrapping property.
</TextBlock>
</StackPanel>

Aniqlik uchun uchta TextBlock elementini ishlatdik, ularning har biri har xil rangga ega. (Foreground xususiyati). Katta matn muammosining har bir yechimi o'ziga xos tarzda hal qilinadi:

Qizil TextBlock matnni qo'lda ajratish uchun LineBreak yorlig'idan foydalanadi. Bu sizga matnni xohlagan joydan ajratish va yangi qatordan boshlash imkonini beradi, ammo bu yechim ko'p holatlarda yetarlicha moslashuvchan emas. Agar foydalanuvchi oynani kattalashtirsa, matn o'sha joyda qoladi, garchi bitta satrda joylashtirilgan imkoni bo‘lsa ham.

Yashil TextBlock , matn endi kenglikka mos kelmasa, TextBlock satrining oxiriga 3 nuqta (...) qo'shish uchun CharacterEllipsis qiymati bilan TextTrimming xususiyatidan foydalanadi. Bu konteyner sig'adigan joydan ko'proq matn borligi haqida signal berishning keng tarqalgan usuli.

Uchinchi variant - ko'k TextBlock matn sig‘may qolsa, yangi satrga o‘tish uchun TextWrapping xususiyatiga Wrap qiymati o‘rnatiladi. Biz qatorni qo'lda boshqargan birinchi matn maydonidan farqli o'laroq, bu erda jarayon to'liq avtomatik bo'lib, yana bir afzalliklarga ega: agar matn maydonining kattaligi o'zgartirilsa, satrlar o'zlarini yangilaydi. Oynani kattaroq yoki kichraytirgan holda siz matn qanday moslashishini sezishingiz mumkin.

Bu erda TextBlock-dagi oddiy satrlar bilan ishlash jarayoni ko‘rildi. Keyingi darslarda biz ushbu elementning yanada rivojlangan funksiyalarini ko'rib chiqamiz, bu sizga TextBlock-da turli xil uslubdagi matnlarni yaratishga va boshqa ko'p narsalarga imkon beradi.

Report Page