TOC

This article is currently in the process of being translated into Bulgarian (~46% done).

Basic controls:

The TextBlock control

TextBlock is not a control, per se, since it doesn't inherit from the Control class, but it's used much like any other control in the WPF framework, so we'll call it a control to keep things simple.

Текстблока(TextBlock) е една от най-основните контроли в WPF,като също може да ни е от голяма полза.Той ти позволява да въведем текст на екрана,също както прави контрола Етикет(Label), но по един начин, който е по-опростен и изисква по-малко ресурси.Изградено е мнението,че Етикета(Label) се използва за кратки текстове , например за едноредов текст(като също може да съдържа и изпбражение),докато Текстблока(TextBlock) също така работи много добре за многоредов текст,но особеното тук е че може да съдържа само и единствено текст т.e (strings).Както Етикета(Label), то така и Текстблока(TextBlock) ни предлагат своите предимства които са уникални сами по себе си,а за това кое от двете трябва да използваме зависи най-вече от ситуацията.

Ние вече използвахме един Текстблок контрол в "Здравей,WPF!" ,но за сега нека да обърнем внимание на Текстблока в наи-опростеният му вариант:

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

Това е толкова просто колкото изглежда и ако вече сте прочели предишните части на тоси туториъл тогава би трябвало да нямате нищо непозато тук.Текстът между Текстблокът(TextBlock) е просто един прякпът за настройване на Текстовите свойства(Text property) на Текстблока (TextBlock).

For the next example, let's try a longer text to show how the TextBlock deals with that. I've also added a bit of margin, to make it look just a bit better:

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

Dealing with long strings

Както скоро ще разберете от скрийншота или така наречената екранна снимка, Текстблока е напълно способен да борави с дълги,многоредови текстове,но все пак нчма да направи нищо по подразбиране.В такъв случай текста е твърде дълъд за да бъде визуализиран в прозореца,така визуализира толкова текст колкото е въжможно, а след това просто спира.

За щастие,има нчколко начина по които ние можем да се справим с това.Ще ви покажа всички тях,а след това и ще ви ги обясня пооделно.

<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>
</Window>

Така,сега ние имаме три Текстблок контроли(TextBlock controls),всеки от които е с различен цвят(използвайки свойството( Foreground) за един по-лесен преглед.Те всички се уповават на факта че тяхното текстово съдържание е твърде дълго по няколко различни начина.

The red TextBlock uses a LineBreak tag to manually break the line at a designated location. This gives you absolute control over where you want the text to break onto a new line, but it's not very flexible for most situations. If the user makes the window bigger, the text will still wrap at the same position, even though there may now be room enough to fit the entire text onto one line.

The green TextBlock uses the TextTrimming property with the value CharacterEllipsis to make the TextBlock show an ellipsis (...) when it can't fit any more text into the control. This is a common way of showing that there's more text, but not enough room to show it. This is great when you have text that might be too long but you absolutely don't want it to use more than one line. As an alternative to CharacterEllipsis you may use WordEllipsis, which will trim the text at the end of the last possible word instead of the last possible character, preventing that a word is only shown in part.

The blue TextBlock uses the TextWrapping property with the value Wrap, to make the TextBlock wrap to the next line whenever it can't fit anymore text into the previous line. Contrary to the first TextBlock, where we manually define where to wrap the text, this happens completely automatic and even better: It's also automatically adjusted as soon as the TextBlock get more or less space available. Try making the window in the example bigger or smaller and you will see how the wrapping is updated to match the situation.

Всичко това беше свързано със прости низове в Текстблокът(TextBlock).В следващата глава ние ще разгледаме някои от по-напредналите и осъвършенствани функционалности на Текстблокът(TextBlock) ,които ни позволяват да създаваме текстове в различни стилове в рамките на Текстблокът(TextBlock) и много повече от това.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!