在XAML中设置TextBlock的最大chr长度

qcuzuvrc  于 2023-11-14  发布在  其他
关注(0)|答案(5)|浏览(169)

如何在xaml中设置允许用户在TextBlock中输入的字符数?
我会在Model上做这件事,还是创建某种自定义属性来处理它?

ff29svar

ff29svar1#

TextBlock没有MaxLength,Label.TextBox也没有。用户不能在TextBlock中输入,除非您修改了它。
它真的是一个你想要限制的TextBlock还是一个TextBox?如果它是一个TextBox,你可以简单地使用MaxLength属性。

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

字符串
如果它确实是你正在使用的TextBlock,并且以某种方式允许用户向其中输入数据,那么切换到使用TextBox。如果它是你想要的TextBlock样式,你可以将TextBox样式设置为看起来像TextBlock。

wydwbb8l

wydwbb8l2#

在不创建自定义控件的情况下,您有几个选项。
您可以尝试调整TextBlock的大小以完全适合您预期的文本,但这会因为不同的输入或不同的字体大小而变得非常难看。
相反,您可以验证要分配给TextBlock.Text属性的字符串的字符长度,并在必要时对其进行限制。

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

字符串
另一种选择是使用TextWrappingTextTrimming属性。可以将以下属性添加到TextBlock xaml中以添加换行和“...”以表示文本超出TextBlock的大小。

<TextBlock ... TextWrapping="Wrap" TextTrimming="CharacterEllipsis" />

kcrjzv8t

kcrjzv8t3#

您可以使用Textblock的“TextTrimming”属性。设置TextTrimming =“TexterEllipsis”。您可能需要使用Width来管理您真正想要显示的字符数。

<TextBlock TextTrimming="CharacterEllipsis" Text="{Binding Subject}"/>

字符串

knsnq2tg

knsnq2tg4#

设置MaxHeight =“SomeHeight”并使用

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

字符串
或者使用类似于Textblock的TextBox,通过设置

<TextBox IsReadOnly="True" Background="Transparent" BorderThickness="0"
 MaxLength="100"

e4yzc0pl

e4yzc0pl5#

另一种方法是使用StringFormat格式化所显示的字符串。
例如,我想显示一个decimal x,但只能显示小数点后的5位数:

<TextBlock Text="{Binding x, StringFormat={}{0:F5}}"/>

字符串
参见Use StringFormat to add a string to a WPF XAML binding了解更多示例。

相关问题