Установите максимальную длину chr для текстового блока в XAML - PullRequest
16 голосов
/ 20 марта 2012

Как установить количество символов, которое пользователю разрешено вводить в TextBlock в xaml?

Могу ли я сделать это на модели или создать какой-то собственный атрибут для обработки?

Ответы [ 4 ]

11 голосов
/ 20 марта 2012

TextBlock не имеет MaxLength, как и Label. TextBox делает. Пользователи не могут вводить данные в TextBlock, если вы не изменили его.

Это действительно TextBlock, который вы хотите ограничить, или вы имели в виду TextBox? Если это TextBox, вы можете просто использовать свойство MaxLength.

<TextBox Name="textBox1" MaxLength="5" />

Если это действительно TextBlock, который вы используете и каким-то образом позволяете пользователю вводить в него данные, то переключитесь на использование TextBox. Если вам нужен стиль TextBlock, вы можете настроить TextBox так, чтобы он выглядел как TextBlock.

8 голосов
/ 20 марта 2012

Без создания пользовательского элемента управления у вас есть несколько вариантов.

Вы можете попытаться изменить размер TextBlock, чтобы он точно соответствовал ожидаемому тексту, но это ужасно быстро, если учесть различный ввод или размер шрифта.

Вместо этого вы можете проверитьдлина символа строки, которая будет присвоена свойству TextBlock.Text, и ограничьте ее при необходимости.

string s = "new text";
if (s.Length > maxLen)
    textBlock1.Text = s.Substring(0, maxLen);
else
    textBlock1.Text = s;

Другой вариант - использовать свойства TextWrapping и TextTrimming.Следующие атрибуты могут быть добавлены в TextBlock xaml для добавления переноса строк и «...» для обозначения того, что текст существует за пределами размера TextBlock.

<TextBlock ... TextWrapping="Wrap" TextTrimming="CharacterEllipsis" />
3 голосов
/ 17 августа 2014

Вы можете использовать свойство TextTrimming для текстового блока. Установите TextTrimming = "CharacterEllipsis". Возможно, вам придется поиграть с Ширина , чтобы определить, сколько символов вы действительно хотите отобразить.

<TextBlock TextTrimming="CharacterEllipsis" Text="{Binding Subject}"/>
0 голосов
/ 10 декабря 2015

Либо установите MaxHeight = "SomeHeight" и обрежьте переполнение с помощью

<TextBlock TextTrimming="CharacterEllipsis" Text="{Binding LongText}"

Или используйте TextBox как Текстовый блок , установив

<TextBox IsReadOnly="True" Background="Transparent" BorderThickness="0"
 MaxLength="100"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...