Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Элемент управления TextBlock обеспечивает гибкую поддержку текста для приложений WPF. Нацеливайте этот элемент в основном для базовых сценариев пользовательского интерфейса, для которых не требуется более одного абзаца текста. Он поддерживает свойства, которые обеспечивают точный контроль представления, например FontFamily, FontSize, FontWeight, TextEffectsи TextWrapping. Используйте свойство Text для добавления текстового содержимого. При использовании его в XAML содержимое между открытым и закрывающим тегом становится текстом элемента.
Установить текстовое содержимое
Задайте текстовое содержимое в TextBlock, используя два подхода:
Текстовое свойство: для простого одноформатного текста используйте Text это свойство. Этот подход прост и применяет одинаковое форматирование ко всему тексту.
<TextBlock Text="This is simple text." Margin="0,0,0,20"/>Свойство Inlines: для текста со смешанным форматированием используйте свойство Inlines. Эта коллекция содержит встроенные элементы, которые позволяют применять различные форматирования к разным частям текста.
<TextBlock Margin="0,0,0,20"> This text contains <Bold>bold</Bold> and <Italic>italic</Italic> formatting. </TextBlock>
Встроенные элементы и форматирование
Свойство Inlines принимает коллекцию Inline элементов, которые обеспечивают форматирование текста в пределах одного TextBlock. К общим встроенным элементам относятся:
- Run: представляет собой неформатированный или равномерно отформатированный текст.
- Span: группирует другие встроенные элементы и применяет форматирование ко всем содержащимся элементам.
- `Bold: применяет полужирное форматирование к вложенному тексту.`
- Italic: применяет курсивное форматирование к содержачному тексту.
- Underline: применяет форматирование подчеркивания к содержащемуся тексту.
- Hyperlink: создает гиперссылки, доступные для щелчка в тексте.
- LineBreak: вставляет разрыв строки.
В этом примере показано использование встроенных элементов:
<TextBlock Margin="0,0,0,20">
<Run FontWeight="Bold" Foreground="Blue">Welcome</Run>
<Run> to </Run>
<Span FontFamily="Courier New">
<Run>formatted</Run>
<Run Foreground="Red"> text</Run>
</Span>
<Run>!</Run>
</TextBlock>
Вы также можете программным способом управлять коллекцией Inlines для динамической сборки отформатированного текста:
TextBlock textBlock = new TextBlock();
textBlock.Inlines.Add(new Bold(new Run("Important:")));
textBlock.Inlines.Add(new Run(" This is a message."));
Dim textBlock As New TextBlock()
textBlock.Inlines.Add(New Bold(New Run("Important:")))
textBlock.Inlines.Add(New Run(" This is a message."))
Упаковка текста
Свойство TextWrapping управляет поведением текста, когда он достигает края TextBlock. Задайте для него одно из значений TextWrapping перечисления:
-
NoWrap: текст не упаковывается и выходит за рамки TextBlock при необходимости. -
Wrap: текст переносится на следующую строку при достижении края. -
WrapWithOverflow: текст переносится, если это возможно, но если одно слово слишком длинное, оно выходит за границу.
<TextBlock TextWrapping="Wrap" Width="200" Margin="0,0,0,20">
This text will wrap to multiple lines when it reaches the width of 200 pixels.
</TextBlock>
Упаковка текста особенно полезна для адаптивных макетов и при отображении динамического содержимого, в котором длина текста неизвестна.
Функции типографии и OpenType
WPF TextBlock поддерживает расширенные возможности типографии OpenType через класс Typography. Эти функции позволяют точно контролировать отрисовку текста, в том числе:
- Лигатуры (объединение символов, таких как "fi" в один глиф)
- Kerning (настройка интервалов между определенными парами символов)
- Стилистические альтернативы
- Небольшие крышки
- Шваши и декоративные символы
Доступ к функциям типографии с помощью присоединенных свойств:
<TextBlock Typography.Kerning="True"
Typography.Capitals="SmallCaps"
Margin="0,0,0,20">
Typography Features
</TextBlock>
Чтобы задать функции типографии в коде Typography , используйте статические методы класса:
TextBlock textBlock = new TextBlock();
textBlock.Text = "Typography Features";
Typography.SetKerning(textBlock, true);
Typography.SetCapitals(textBlock, FontCapitals.SmallCaps);
Dim textBlock As New TextBlock()
textBlock.Text = "Typography Features"
Typography.SetKerning(textBlock, True)
Typography.SetCapitals(textBlock, FontCapitals.SmallCaps)
Дополнительные сведения о функциях типографии см. в разделе "Типография" в WPF.
Hyperlinks
Добавьте гиперссылки, доступные для щелчка TextBlock , в элементе Hyperlink . Гиперссылки поддерживают навигацию по URI и могут реагировать на события щелчка.
<TextBlock Margin="0,0,0,20">
For more information, visit
<Hyperlink NavigateUri="https://learn.microsoft.com">
Microsoft Learn
</Hyperlink>.
</TextBlock>
Обработка событий навигации по гиперссылкам для контроля поведения:
<TextBlock>
<Hyperlink NavigateUri="https://example.com"
RequestNavigate="Hyperlink_RequestNavigate">
Click here
</Hyperlink>
</TextBlock>
В коде программной части обработайте RequestNavigate событие, чтобы открыть ссылку в браузере по умолчанию:
private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
Process.Start(new ProcessStartInfo
{
FileName = e.Uri.AbsoluteUri,
UseShellExecute = true
});
e.Handled = true;
}
Private Sub Hyperlink_RequestNavigate(sender As Object, e As RequestNavigateEventArgs)
Process.Start(New ProcessStartInfo With {
.FileName = e.Uri.AbsoluteUri,
.UseShellExecute = True
})
e.Handled = True
End Sub
TextBlock и RichTextBox
Хотя TextBlock может быть идеально подходит для отображения текста с форматированием только для чтения, рекомендуется использовать RichTextBox, когда это необходимо.
- Несколько абзацев с различным форматированием
- Возможности редактирования пользователей
- Отступ текста
- Более сложные структуры документов
TextBlock обеспечивает более высокую производительность и упрощенную модель программирования, что делает его предпочтительным вариантом для большинства сценариев отображения текста пользовательского интерфейса.
Справка
Связанные разделы
.NET Desktop feedback