WPF为什么此Textblock会在开头显示换行符?

问题描述

因此,我创建了一个TextBlock派生的自定义类,以便将“ value ^ 5”之类的公式过滤为可渲染的内容(请参见related question)。

现在,这很好。所谓的LatexBlock自定义TextBlock)成功捕获了我要作为下标和上标放入的Inline部分。就像这张图片中的这里:

correct rendering of desired formula

这是通过以下代码生成的:

        block.Text = "";
        block.Inlines.Clear();
        block.Inlines.Add(new Run(text,block.ContentStart) { BaselineAlignment = BaselineAlignment.Baseline});
        block.Inlines.Add(new Run(sub) { BaselineAlignment = System.Windows.BaselineAlignment.Subscript });
        block.Inlines.Add(new Run(super) { BaselineAlignment = System.Windows.BaselineAlignment.Superscript});

其中textsubsuper是从正则表达式捕获的组(请参见上面链接的其他问题)。现在,我遇到的怪异行为是,在文本块的开头是否有空行?在这图片上可以很容易看出:

textblock with bounds

如您所见,TextBlock的边界与内容不匹配。有人知道吗,为什么会在这里发生?我已经尝试将第一个TextPointer的{​​{1}}显式设置为Run s TextBlock,但这没有任何区别。

解决方法

感谢Biesi的评论,我知道了。它是为上标文本保留的空间,即使文本为空也将保留。

在内联添加之前添加if(super != "")可以得到正确的输出。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...