WPF RichTextBox автоматически объединяет два смежных прогона
У меня есть RichTextBox
содержащий два Runs
:
<RichTextBox>
<RichTextBox.Document>
<FlowDocument>
<FlowDocument.Blocks>
<Paragraph Name="par">
<Run Text="First"/>
<Run Text="Second"/>
</Paragraph>
</FlowDocument.Blocks>
</FlowDocument>
</RichTextBox.Document>
</RichTextBox>
Когда я перебираю Inlines
из par
Я вижу три Runs
: "Первый", " "(пробел) и "Второй". Все нормально. Но если я удалю второе "" Run
(используя клавишу Backspace, например), а затем итерации по Inlines
из par
Я вижу только одну "FirstSecond" Run
, RichTextBox
объединяет два оставшихся Runs
в одиночку Run
, Однако, если "Первый" и "Второй" Runs
есть разные TextFont
или же TextWeight
ценности, RichTextBox
не объединю их, и я увижу два разных Runs
: "Первый" и "Второй".
Теперь мой вопрос: как я могу сохранить смежные Runs
от слияния автоматически RichTextBox
?
Я хотел бы получить поведение, подобное тому, когда Runs
есть разные TextFont
или же TextWeight
значения, но визуально их форматы должны быть равны. Я пытался установить разные Tag
значения для разных Runs
, но это не помогло. Может быть, есть какой-то "логический" формат, который не влияет на внешний вид Runs
, но предупреждает RichTextBox, чтобы различать их.
1 ответ
Хотя я не нашел четкого решения, есть обходной путь. Run
имеет Typography
свойство, которое, в свою очередь, имеет Int32
AnnotationAlternates
имущество. Это свойство определяет тонкую настройку внешнего вида для конкретных символов определенных шрифтов. Если это свойство не используется должным образом, его можно использовать как "логический" формат для Run
, Как написано в MSDN:
Если значение AnnotationAlternates больше нуля и выбранный шрифт не поддерживает альтернативы аннотации, отображается форма буквы по умолчанию.
В моем приложении я использую Segoe UI
шрифт, который, как оказалось, не поддерживает альтернативы аннотации, поэтому этот обходной путь работает для меня. Если вы используете шрифт, который поддерживает альтернативы аннотаций, вы можете попробовать использовать довольно большие значения AnnotationAlternates
свойство, может быть, оно не повлияет на внешний вид текста.