我在使用ICSharpCode的AvalonEdit文本编辑器,并且创建了一个自定义DocumentColorizingTransformer。
我想要在ColorizeLine中使某些行的文本居中,这是否可行?
我已经能够找到如何以其他任何方式更改行的文本(颜色、斜体、下划线等),但我无法找到如何更改行的文本对齐方式...
我在使用ICSharpCode的AvalonEdit文本编辑器,并且创建了一个自定义DocumentColorizingTransformer。
我想要在ColorizeLine中使某些行的文本居中,这是否可行?
我已经能够找到如何以其他任何方式更改行的文本(颜色、斜体、下划线等),但我无法找到如何更改行的文本对齐方式...
我最终不得不深入编辑器的源代码:
首先,在VisualLineTextParagraphProperties.cs中,我必须通过一个新的内部属性(默认为左对齐)公开TextAlignment,以便我可以设置它(当然,也可以从公共属性的getter中返回它)。
然后,在TextView.cs中,在BuildVisualLine方法中,我必须测试documentLine的文本是否符合我想要居中的条件,然后相应地更改paragraphProperties对象。
请注意,我不得不复制paragraphProperties的副本 - 否则居中对齐会渗透到下一行(因为给定的paragraphProperties对象似乎被重用)。
还要注意,我找不到使用VisualLineElementGenerator来做这件事的方法 - 即使在我的看法中,那仍然是改变类似TextAlignment这样的东西的地方...