Как установить высоту textblock / textbox в 3 строки?

Я могу установить фиксированную высоту в пикселях, но я хотел бы установить ее в линиях. Как и в html, вы можете установить высоту текстового поля на количество строк / строк.

3 ответов


попробовать 3em

1em равно текущему размеру шрифта. 2em означает 2-кратный размер текущего шрифта. Например, если элемент отображается шрифтом 12 pt, то '2em' равно 24 pt.


для текстового поля задайте свойства MinLines и MaxLines. Чтобы лучше приблизить HTML textarea, рассмотрите также настройку TextWrapping, VerticalScrollBarVisibility и AcceptsReturn следующим образом:

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

Решение 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);

вот ты где !