Установите максимальную длину chr для TextBlock в XAML
Как установить количество символов, которые пользователю разрешено вводить в TextBlock в xaml?
Могу ли я сделать это на модели или создать какой-то пользовательский атрибут для его обработки?
Ответы
Ответ 1
TextBlock не имеет MaxLength, также не имеет метки. TextBox делает. Пользователи не могут вводить текст в TextBlock, если вы не изменили его.
Действительно ли это TextBlock, который вы хотите ограничить, или вы имели в виду TextBox? Если это TextBox, вы можете просто использовать свойство MaxLength.
<TextBox Name="textBox1" MaxLength="5" />
Если вы действительно используете TextBlock и каким-то образом позволяете пользователю вводить в него данные, тогда переключитесь на использование TextBox. Если это стиль TextBlock, который вы используете, вы можете стилизовать TextBox, чтобы он выглядел как TextBlock.
Ответ 2
Без создания настраиваемого элемента управления у вас есть несколько вариантов.
Вы можете попробовать размер 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
Вы можете использовать свойство TextTrimming для текстового блока. Установите TextTrimming = "CharacterEllipsis". Возможно, вам потребуется сыграть с Ширина, чтобы управлять количеством символов, которые вы действительно хотите отобразить.
<TextBlock TextTrimming="CharacterEllipsis" Text="{Binding Subject}"/>
Ответ 4
Установите MaxHeight = "SomeHeight" и обрезайте переполнение с помощью
<TextBlock TextTrimming="CharacterEllipsis" Text="{Binding LongText}"
Или используйте TextBox, например Текстовый блок, установив
<TextBox IsReadOnly="True" Background="Transparent" BorderThickness="0"
MaxLength="100"