В этой статье:
Настройка форматированного текста в пользовательском интерфейсе
Номер статьи: KB000034
В различных элементах объектов платформы, предназначенных для отображения какого-либо текста, реализовано использование RTF-редактора. RTF-представление позволяет производить более детальную настройку оформления текста (настраивать оформление отдельных частей текста). Также различные заголовки, поддерживающие интерфейс IGxTitle, могут хранить настройки оформления в форматах XAML или HTML.
Примечание. Формат XAML более не поддерживается для хранения значений форматированного текста. При указании значений в формате XAML они автоматически будут преобразованы в формат RTF. Также будут преобразовываться старые значения, хранящиеся в формате XAML.
Следующие элементы поддерживают использование форматированного текста:
Элемент, использующий форматированный текст | Свойство Fore |
Ячейки таблиц регламентного отчета | ITabRange.Text в сочетании со свойствами ITabRange.IsRtfText |
Заголовок диаграммы и ее оси | |
Метки на диаграмме | |
Текст в фигурах рабочего пространства | |
Заголовки, поддерживающие интерфейс IGxTitle | IGxTitle.FormattedText, IGxTitle.FormattedTitle, IGxTitle.HtmlText, IGxTitle.HtmlTitle |
Для настройки оформления блока текста выделите необходимый текст и в контекстном меню выполните команду «Формат»:
Открывшийся диалог идентичен диалогам настройки параметров текста, но в нем доступны для использования дополнительные шрифты, которые могут быть отрисованы с помощью технологии WPF.
Важно. При изменении размера текста с установленным форматированием не учитываются пробелы, которые могут быть в конце текста. В связи с этим может некорректно рассчитываться размер рабочей области элемента, в котором будет отображаться форматированный текст.
Для установки форматированного текста через Fore задайте значение свойства для соответствующего элемента. Список доступных свойств указан в таблице выше. В зависимости от того, в каком формате указывается текст, учитывайте особенности форматов, описанные ниже.
В качестве значения задается текст, представляющий собой разметку на языке XAML, представленную в виде настроек элемента «TextBlock»:
"<?xml version=""1.0"" encoding=""utf-16""?>
<TextBlock FontFamily=""Arial"" FontStyle=""Normal"" FontWeight=""Bold"" FontSize=""13.3333333333333""
xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">Очень<LineBreak />
<Run FontSize=""15.3333333333333"" Foreground=""#FF366092"">Важный</Run><LineBreak />
<Run Foreground=""#FFE26B0A"" FontSize=""18.3333333333333"">Заголовок</Run></TextBlock>";
Общие атрибуты для оформления всего блока текста настраиваются для элемента TextBlock, который может включать в себя:
сам текст, который берет общие атрибуты оформления;
разрывы строк <LineBreak/>;
блоки, с отличающимся оформлением текста - элементы Run.
Примечание. Элементы TextBlock и Run имеют одинаковые атрибуты для настройки текста. Атрибуты элемента Run перекрывают схожие атрибуты элемента TextBlock.
Обязательный атрибут элемента TextBlock - xmlns. Он определяет пространство имен WPF. Описание используемого элемента TextBlock представлено в MSDN. При составлении разметки можно руководствоваться описанием класса System.Windows.Controls.Textblock.
В качестве значения задается текст, представляющий собой разметку на языке HTML. Основным элемент разметки является элемент <Span>...</Span>. Форматированный текст будет являться комбинацией элементов <Span>:
<span style="font-family: Arial;font-size: 12pt;color: #000000;background-color: #366092;text-align: left;">
<span style="font-weight: bold;font-size: 10pt;font-family: inherit;">Очень</span><br/>
<span style="color: #366092;font-weight: bold;font-size: 11pt;font-family: inherit;">Важный</span><br/>
<span style="color: #e26b0a;font-weight: bold;font-size: 14pt;font-family: inherit;">Заголовок</span></span>
Для представления форматированного текста в формате RTF требуется знание спецификации этого формата. Подобными знаниями в основном обладают разработчики, имеющие дело с различными текстовыми редакторами. В Fore для преобразования текста в различные форматы, был разработан специальный класс TextConverter. Используя его метод Export, можно получить RTF-представление, например, из имеющегося HTML-представления форматированного текста. Ниже приведен пример функции, которая осуществляет такое преобразование:
Function HtmlToRtf(html: String): String;
Var
Converter: ITextConverter;
Begin
Converter := New TextConverter.Create;
Return Converter.Export(html, TextFormat.Rtf);
End Function HtmlToRtf;
См. также: