1

我在 UWP 中有一个项目,我需要在 RichEditBox 和 RichTextBlock 中显示相同的文本。

对于某些字体(例如 Courier),这是相当不错的,没有什么大问题,但对于其他字体(例如 Arial)来说,差异是相当大的。请注意,我使用完全相同的代码,唯一的区别只是字体。

请在此处找到重现该问题的 MVCE:https ://github.com/vfailla/UWPrichEditBox

如何设置这两个元素以相同的视觉方式在 Arial 中显示文本?

4

1 回答 1

1

对于某些字体(例如 Courier),这是相当不错的,没有什么大问题,但对于其他字体(例如 Arial)来说,差异是相当大的。请注意,我使用完全相同的代码,唯一的区别只是字体。

首先,您需要CharacterSpacing对这两个不同的控件进行相同的设置:

m_richEditBox.CharacterSpacing = 100;
m_richTextBlock.CharacterSpacing = 100;

然后,您需要对FontStretch两个控件进行相同的设置,但问题来了:经过几次测试后,我发现 textStretch 不适用于 RichEditBox/TextBox。而且默认情况下,里面的文本看起来更像FontStretch.Condensed. 因此,作为临时解决方法,您可以将您的设置RichTextBlock.FontStretchFontStretch.Condensed

m_richTextBlock.FontStretch = FontStretch.Condensed;

我将通过内部渠道咨询以报告此问题,并在收到任何回复后更新此线程。

于 2019-10-01T04:51:43.690 回答