Поделиться через


блок Text

Text блок является основным элементом управления для отображения текста только для чтения в приложениях. Его можно использовать для отображения однострочного или многострочного текста, встроенных гиперссылок и текста с форматированием, например полужирным, курсивом или подчеркиванием.

Выбор правильного элемента управления

Блок текста обычно проще использовать и обеспечивает лучшую производительность отрисовки текста, чем блок форматированного текста, поэтому он предпочтителен для большинства текста пользовательского интерфейса приложения. Вы можете легко получить доступ к тексту из текстового блока в приложении, получив значение свойства Text. Он также предоставляет множество одинаковых параметров форматирования для настройки отрисовки текста.

Хотя в текст можно поместить разрывы строк, блок текста разработан для отображения одного абзаца и не поддерживает отступ текста. Используйте RichTextBlock , если требуется поддержка нескольких абзацев, текста с несколькими столбцами или других сложных текстовых макетов или встроенных элементов пользовательского интерфейса, таких как изображения.

Дополнительные сведения о выборе правильного элемента управления текстом см. в Text статье об элементах управления .

Создание текстового блока

Приложение WinUI 3 Gallery включает интерактивные примеры большинства элементов управления, функций и возможностей WinUI 3. Получение приложения из Microsoft Store или получение исходного кода на GitHub

Вот как определить простой элемент управления TextBlock и задать для свойства Text строку.

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

Модель содержимого

Существует два свойства, которые можно использовать для добавления содержимого в TextBlock: Text и Inlines.

Наиболее распространенным способом отображения текста является установка свойства Text строковым значением, как показано в предыдущем примере.

Вы также можете добавить содержимое, разместив встроенные элементы содержимого потока в свойстве Inlines, как показано ниже. (Inlines — это свойство содержимого по умолчанию TextBlock, поэтому не нужно явно добавлять его в XAML.)

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

Элементы, производные от класса Inline, такие как Bold, Italic, Run, Spanи LineBreak, обеспечивают разное форматирование для разных частей текста. Дополнительные сведения см. в разделе "Форматирование текста ". Встроенный элемент Гиперссылки позволяет добавить гиперссылку в текст. Однако использование Inlines также отключает быстрый рендеринг текста, который рассматривается в следующем разделе.

Замечания, связанные с быстродействием

По возможности XAML использует более эффективный путь кода для макета текста. Этот быстрый путь уменьшает общее использование памяти и значительно сокращает время ЦП для измерения текста и упорядочения. Этот быстрый путь применяется только к TextBlock, поэтому его следует предпочесть, если возможно, вместо RichTextBlock.

Для некоторых условий требуется, чтобы TextBlock возвращался к более полнофункциональному и ресурсоемкому коду для рендеринга текста. Чтобы сохранить отрисовку текста на быстром пути, обязательно следуйте этим рекомендациям при настройке свойств, перечисленных здесь.

  • Text. Самое важное условие заключается в том, что быстрый путь используется только при явном задании текста путем явного задания свойства Text в XAML или коде (как показано в предыдущих примерах). Настройка текста с помощью коллекции TextBlockInlines(например, <TextBlock>Inline text</TextBlock>) отключит быстрый путь из-за потенциальной сложности нескольких форматов.
  • CharacterSpacing: только значение по умолчанию 0 — это ускоренный путь.
  • TextTrimming: только значения Noneи CharacterEllipsisWordEllipsis значения являются быстрым путем. Значение Clip отключает быстрый путь.

Примечание.

Только UWP: До Windows 10, версии 1607, дополнительные свойства также влияют на ускоренный маршрут. Если ваше приложение запущено на более ранней версии Windows, это приведет к тому, что текст будет отображаться в медленном режиме. Дополнительные сведения о версиях см. в разделе "Адаптивный код версии".

  • Типография: только значения по умолчанию для различных Typography свойств являются быстрым путем.
  • LineStackingStrategy: если LineHeight не равен 0, BaselineToBaseline и MaxHeight значения отключают быстрый путь.
  • IsTextSelectionEnabled: Только false является быстрым путем. Установка этого свойства на true отключает быстрый путь.

Свойство DebugSettings.IsTextPerformanceVisualizationEnabledtrue можно задать во время отладки, чтобы определить, используется ли текст с быстрой отрисовкой пути. Если для этого свойства задано значение true, текст на быстром пути отображается в ярко-зеленом цвете.

Обычно параметры отладки задаются переопределением метода OnLaunched на странице программной части для App.xaml, как это делается.

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

// ...

}

В этом примере первый TextBlock обрабатывается с использованием быстрого способа, а второй — нет.

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

При запуске этого XAML в режиме отладки с параметром IsTextPerformanceVisualizationEnabled значение true, результат выглядит следующим образом.

Text отрисовано в режиме отладки

Внимание

Цвет текста, который не находится на быстром пути, не изменяется. Если в приложении есть текст с цветом, указанным как ярко-зеленый, он по-прежнему отображается в ярко-зеленом цвете, когда он находится на более медленном пути отрисовки. Будьте осторожны, чтобы не путать текст, который имеет зеленый цвет в приложении с текстом, который находится на быстром пути и зеленый из-за параметров отладки.

Форматирование текста

Хотя свойство Text хранит обычный текст, вы можете применить различные параметры форматирования к элементу управления TextBlock, чтобы настроить отображение текста в приложении. Вы можете задать стандартные свойства элемента управления, такие как FontFamily, FontSize, FontStyle, Foreground и CharacterSpacing , чтобы изменить внешний вид текста. Вы также можете использовать встроенные текстовые элементы и вложенные свойства typeography для форматирования текста. Эти параметры влияют только на то, как TextBlock отображает текст локально, поэтому при копировании и вставки текста в элемент управления форматированным текстом, например, форматирование не применяется.

Примечание.

Помните, что, как отмечалось в предыдущем разделе, встроенные текстовые элементы и значения типографии, отличные от стандартного значения, не отображаются на быстром пути.

элементы Inline

Пространство имен Microsoft.UI.Xaml.Documents предоставляет множество встроенных текстовых элементов, которые можно использовать для форматирования текста, например Bold, Italic, Run, Spanи LineBreak.

Вы можете отобразить ряд строк в TextBlock, где каждая строка имеет разные форматирования. Это можно сделать с помощью элемента Run для отображения каждой строки с его форматированием и разделив каждый элемент Run с элементом LineBreak.

Вот как определить несколько отформатированных текстовых строк в TextBlock с помощью объектов Run, разделенных LineBreak.

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

Вот результат.

Text форматирование с элементами запуска

Оформление текста

Присоединенные свойства класса Typeography предоставляют доступ к набору свойств типографии Microsoft OpenType. Эти присоединённые свойства можно задать в TextBlockили на отдельных элементах встроенного текста. В этих примерах показаны оба.

<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 и WinUI 2

Внимание

Сведения и примеры, приведенные в этой статье, оптимизированы для приложений, использующих Windows App SDK и WinUI 3, но, как правило, применимы и к приложениям UWP, использующим WinUI 2. См. справочник по API UWP для конкретных сведений и примеров платформы.

В этом разделе содержатся сведения, необходимые для использования элемента управления в приложении UWP или WinUI 2.

API для этого элемента управления существуют в пространстве имен Windows.UI.Xaml.Controls .

Мы рекомендуем использовать последнюю версию WinUI 2 , чтобы получить самые актуальные стили, шаблоны и функции для всех элементов управления.