Silverlight 3 - управление переносом в TextBox

Хорошо, у меня в Silverlight возникла следующая проблема. У меня есть элемент управления с 2 столбцами. Слева находится панель стека с номерами строк, а справа - текстовое поле.

Поэтому, когда я пишу в textBox без включения переноса, я могу просто создать правильное количество чисел слева, потому что я ищу '\ r' в тексте.

Но когда я включаю перенос, я не могу контролировать количество строк в textBox.

Есть ли способ добраться до этого количества? Или способ узнать, какая строка в textBox будет перенесена?

Надеюсь, вы понимаете, что я пытаюсь сделать.


person Gapipro    schedule 06.04.2010    source источник


Ответы (4)


Есть один способ сделать это. Вы можете имитировать операцию переноса слов в фоновом режиме с помощью TextBlock. Вот хорошая ссылка на полное решение этой проблемы.

Расширенный элемент управления TextBox со свойством MaxLines

person Ross Brigoli    schedule 19.08.2011

Невозможно создать свои элементы в коде до того, как они будут переданы в представление. Это позволит вам привязать список элементов к списку и стилизовать их по своему усмотрению.

person Blounty    schedule 06.04.2010
comment
Да, я создаю их в коде, потому что знаю количество строк в textBox. Но когда я включаю перенос, из-за этого создаются новые строки, и тогда я больше не могу получить правильный номер. - person Gapipro; 06.04.2010

Вам нужно использовать преобразователь значений, чтобы подсчитать количество символов / строк, а затем обрезать это число, если хотите. Если вы не используете фиксированную ширину, вы не сможете заранее подсчитать или рассчитать размер, так как каждое приложение может отображаться по-разному (из-за разных параметров размера).

На LearningWindosPhone.com. Есть отличный материал по обучению работе с телефоном для Windows, и не забывайте про Блог разработчиков Windows Phone

person Yochay Kiriaty    schedule 07.04.2010
comment
Хм, если я использую шрифт, в котором все символы одинаковой ширины, я могу вычислить максимальное количество символов / строк, даже если у меня есть динамическое текстовое поле. Это правильно? - person Gapipro; 08.04.2010

Да, есть способ узнать количество строк, занимаемых текстом в текстовом поле. Это не так просто, потому что вам нужно смоделировать поведение переноса слов, чтобы подсчитать / предсказать количество строк, сгенерированных в результате переноса слов. У меня есть решение, подробно описанное здесь.

person Ross Brigoli    schedule 20.08.2011