我使用 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;
}