我正在使用 ICSharpCode 的 AvalonEdit 文本编辑器,并且我有一个自定义 DocumentColorizingTransformer。
我想在 ColorizeLine 中居中某些文本行。这可能吗?
我已经能够弄清楚如何以我想要的所有其他方式(颜色、斜体、下划线等)更改行的文本,但我不知道如何更改行的文本对齐方式......
我正在使用 ICSharpCode 的 AvalonEdit 文本编辑器,并且我有一个自定义 DocumentColorizingTransformer。
我想在 ColorizeLine 中居中某些文本行。这可能吗?
我已经能够弄清楚如何以我想要的所有其他方式(颜色、斜体、下划线等)更改行的文本,但我不知道如何更改行的文本对齐方式......
我最终不得不为此深入研究编辑器的来源:
首先,在VisualLineTextParagraphProperties.cs中,我必须通过一个新的内部属性(默认为 LeftAligned)公开 TextAlignment,因此我可以设置它(当然,还可以从公共属性的 getter 中返回它)。
然后,在TextView.cs中,在 BuildVisualLine 方法中,我必须测试 documentLine 的文本以了解我希望行居中的条件,然后相应地更改段落属性对象。
请注意,我必须复制paragraphProperties - 否则居中对齐会渗入下一行(因为给定的paragraphProperties 对象似乎被重用了)。
另请注意,我找不到使用 VisualLineElementGenerator 来执行此操作的方法 - 尽管在我看来它仍然是更改 TextAlignment 之类的地方...