如何在AvalonEdit中居文本?

时间:2014-06-01 19:12:06

标签: wpf avalonedit

我正在使用ICSharpCode的AvalonEdit文本编辑器,我有一个自定义的DocumentColorizingTransformer。

我想将ColorizeLine中的某些文本行居中。这可能吗?

我已经能够弄清楚如何以我想要的其他方式(颜色,斜体,下划线等)更改线条的文字,但我无法弄清楚如何改变行的文本对齐...

1 个答案:

答案 0 :(得分:2)

我最终不得不深入研究编辑的来源:

首先,在VisualLineTextParagraphProperties.cs中,我不得不通过一个新的内部属性(默认为LeftAligned)公开TextAlignment,所以我可以设置它(当然,从公共属性的getter返回它)

然后,在TextView.cs中,在BuildVisualLine方法中,我必须测试documentLine的文本以了解我希望行居中的条件,然后相应地更改paragraphProperties对象。

请注意我必须复制paragraphProperties - 否则中心对齐会渗透到下一行(因为给定的paragraphProperties对象似乎可以重用)。

另请注意,我找不到使用VisualLineElementGenerator执行此操作的方法 - 即使它仍然在我看来会更改像TextAlignment这样的地方......