1

我使用 WPF RichTextbox 来显示来自其他人和我自己的消息。问题不在于接收消息时。因为对齐方式非常适合左对齐文本,就像在消息传递应用程序中传统所做的那样。问题在于尝试对齐用户发送的内容时。我尝试使用度量字符串函数来获取字符串的宽度,然后我可以从会话框(RichTextBox)视口宽度中减去它,然后使用 string.padleft 在之前添加空格,但是似乎 MeasureString 函数使当文本附加到 RichTextBox 时,字符串会比实际的更宽。

我发现了很多适用于 winforms 的解决方案,但还没有适用于 WPF。任何帮助都是有价值的,在此先感谢。

测量字符串函数:

private int MeasureString(string candidate)
    {
        var formattedText = new FormattedText(
            candidate,
            CultureInfo.CurrentCulture,
            FlowDirection.LeftToRight,
            new Typeface(this.ConversationBox.FontFamily, this.ConversationBox.FontStyle, this.ConversationBox.FontWeight, this.ConversationBox.FontStretch),
            this.ConversationBox.FontSize,
            Brushes.Black,
            new NumberSubstitution(),
            1);

        return (int)formattedText.WidthIncludingTrailingWhitespace;
    }
4

0 回答 0