【问题标题】:How to center text in AvalonEdit?如何在 AvalonEdit 中居中文本?
【发布时间】:2014-07-21 22:01:09
【问题描述】:

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

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

我已经能够弄清楚如何以我想要的所有其他方式(颜色、斜体、下划线等)更改该行的文本,但我不知道如何更改该行的文本对齐方式...

【问题讨论】:

    标签: wpf avalonedit


    【解决方案1】:

    我最终不得不为此挖掘编辑器的来源:

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

    然后,在 TextView.cs 的 BuildVisualLine 方法中,我必须测试 documentLine 的文本是否符合我希望行居中的条件,然后相应地更改段落属性对象。

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

    另外请注意,我找不到使用 VisualLineElementGenerator 来执行此操作的方法 - 尽管在我看来它仍然是更改 TextAlignment 之类的地方...

    【讨论】:

    • 对于右侧对齐,在构造 TextLine 时需要减少 2 个像素到 availableSize.Width。否则,光束光标将在超出右边界时不可见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 2011-11-19
    • 2021-01-10
    • 2014-07-09
    • 2016-01-08
    • 2011-04-28
    • 1970-01-01
    相关资源
    最近更新 更多