Как выясняется, есть два способа установки стилей текста RichTextBox
.
Один из них - изменение стилей абзацев элемента управления.Это работает только для абзацев, а не для выбора.
Вы получаете набор блоков, которые можно преобразовать в абзацы, через свойство .Document.Blocks
RichTextBox
.Вот пример кода, который применяет некоторые стили к первому абзацу.
Paragraph firstParagraph = Editor.Document.Blocks.FirstBlock as Paragraph;
firstParagraph.TextAlignment = TextAlignment.Right;
firstParagraph.TextAlignment = TextAlignment.Left;
firstParagraph.FontWeight = FontWeights.Bold;
firstParagraph.FontStyle = FontStyles.Italic;
firstParagraph.TextDecorations = TextDecorations.Underline;
firstParagraph.TextIndent = 10;
firstParagraph.LineHeight = 20;
Когда это возможно, это предпочтительный способ применения стилей.Хотя для этого требуется написать больше кода, он обеспечивает проверку типов во время компиляции.
Другой способ - применить их к текстовому диапазону
Это позволяет применятьстили для выбора, но без проверки типов.
TextRange selectionRange = Editor.Selection as TextRange;
selectionRange.ApplyPropertyValue(TextElement.FontWeightProperty, FontWeights.Bold);
selectionRange.ApplyPropertyValue(TextElement.FontStyleProperty, FontStyles.Italic);
selectionRange.ApplyPropertyValue(Inline.TextDecorationsProperty, TextDecorations.Underline);
selectionRange.ApplyPropertyValue(Paragraph.LineHeightProperty, 45.0);
selectionRange.ApplyPropertyValue(Paragraph.TextAlignmentProperty, TextAlignment.Right);
Будьте очень осторожны, всегда передавая правильные типы в функцию ApplyPropertyValue, поскольку она не поддерживает проверку типов во время компиляции.
Например, если для свойства LineHeightProperty было установлено значение 45
, то есть Int32
, вместо ожидаемого Double
, вы получите время выполнения ArgumentException
.