如何将文本块/文本框的高度设置为3行?

12

我可以设置固定高度(以像素为单位),但我希望按行数设置高度。有点像在 HTML 中,你可以将文本区域的高度设置为行数。

3个回答

16

对于TextBox,请设置MinLines和MaxLines属性。如果要更好地近似HTML文本区域,请考虑按以下方式设置TextWrapping、VerticalScrollBarVisibility和AcceptsReturn:

<TextBox TextWrapping="Wrap" VerticalScrollBarVisibility="Auto" AcceptsReturn="True" MinLines="3" MaxLines="3"/>

1
最小行数设置为您始终会看到的最少行数,最大行数是显示的最大行数,然后激活滚动条以查看其他行。 - DRK

2

解决方案1

您可以使用FormattedText来测量文本的大小,以下是一个示例:

String text = "Here is my text";
Typeface myTypeface = new Typeface("Helvetica");
FormattedText ft = new FormattedText(text, CultureInfo.CurrentCulture, 
        FlowDirection.LeftToRight, myTypeface, 16, Brushes.Red);

Size textSize = new Size(ft.Width, ft.Height);

解决方案2

使用Graphics类(在此处找到):

System.Drawing.Font font = new System.Drawing.Font("Calibri", 12, FontStyle.Bold);
Bitmap bitmap = new Bitmap(1, 1);
Graphics g = Graphics.FromImage(bitmap);
SizeF measureString = g.MeasureString(text, font);

Here you are !


-3

尝试使用3em

1em等于当前字体大小。2em表示当前字体大小的两倍。例如,如果一个元素以12pt的字体显示,则'2em'为24pt。


1
这是否考虑了行距(WPF 称之为 LineHeight,如果我没记错的话)?如果没有,那么可能少于三行。 - Joey
2
根据MSDN,只允许使用px、in、cm和pt单位,不允许使用em。 - Kugel
也许你可以以某种方式进行转换 - hkon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接