Как рассчитать правильную высоту для автоматически расширяющегося текстового поля в Silverlight? - PullRequest
0 голосов
/ 06 ноября 2008

В моем приложении Silverlight я хочу, чтобы многострочное текстовое поле расширялось каждый раз, когда пользователь нажимает клавишу Enter.

Сложная часть состоит в том, как рассчитать правильную высоту на основе количества строк текста.

Я пробовал следующее, но текстовое поле становится слишком маленьким:

box.Height = box.FontSize*lineCount + box.Padding.Top + box.Padding.Bottom + box.BorderThickness.Top + box.BorderThickness.Bottom;

Что мне здесь не хватает? Или, может быть, это можно сделать как-нибудь автоматически?

Спасибо, Jacob

Редактировать: Я подозреваю, что проблема в свойстве FontSize (используется ли другая единица размера?)

Ответы [ 2 ]

3 голосов
/ 11 ноября 2008

Это похоже на то, как текстовое поле работает из коробки. Просто убедитесь, что вы установили AcceptsReturn = "True" в текстовом поле. Также убедитесь, что вы не установили высоту текстового поля, чтобы она рассчитывалась для вас.

0 голосов
/ 21 апреля 2010

TextBox вызовет событие SizeChanged, а также установит свойство ActualHeight.

Я не думаю, что это имело место в Silverlight 2, когда мне пришлось использовать TextBlock с тем же шрифтом, установить отступ в 4, и установить тот же текст, и получить ActualHeight от этого .

...