【发布时间】:2014-07-21 22:01:09
【问题描述】:
我正在使用 ICSharpCode 的 AvalonEdit 文本编辑器,并且我有一个自定义 DocumentColorizingTransformer。
我想在 ColorizeLine 中将某些文本行居中。这可能吗?
我已经能够弄清楚如何以我想要的所有其他方式(颜色、斜体、下划线等)更改该行的文本,但我不知道如何更改该行的文本对齐方式...
【问题讨论】:
标签: wpf avalonedit
我正在使用 ICSharpCode 的 AvalonEdit 文本编辑器,并且我有一个自定义 DocumentColorizingTransformer。
我想在 ColorizeLine 中将某些文本行居中。这可能吗?
我已经能够弄清楚如何以我想要的所有其他方式(颜色、斜体、下划线等)更改该行的文本,但我不知道如何更改该行的文本对齐方式...
【问题讨论】:
标签: wpf avalonedit
我最终不得不为此挖掘编辑器的来源:
首先,在VisualLineTextParagraphProperties.cs 中,我必须通过一个新的内部属性(默认为 LeftAligned)公开 TextAlignment,因此我可以设置它(当然,还可以从公共属性的 getter 中返回它)。
然后,在 TextView.cs 的 BuildVisualLine 方法中,我必须测试 documentLine 的文本是否符合我希望行居中的条件,然后相应地更改段落属性对象。
请注意,我必须复制paragraphProperties - 否则居中对齐会渗透到下一行(因为给定的paragraphProperties 对象似乎被重用了)。
另外请注意,我找不到使用 VisualLineElementGenerator 来执行此操作的方法 - 尽管在我看来它仍然是更改 TextAlignment 之类的地方...
【讨论】:
TextLine 时需要减少 2 个像素到 availableSize.Width。否则,光束光标将在超出右边界时不可见。