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

时间:2012-03-20 00:21:50

标签: xaml

如何设置允许用户在xaml中的T​​extBlock中输入的字符数?

我会在模型上创建它还是创建某种自定义属性来处理它?<​​/ p>

4 个答案:

答案 0 :(得分:10)

TextBlock没有MaxLength,Label也没有。 TextBox有。除非您对其进行了修改,否则用户无法输入TextBlock。

它真的是你想要限制的TextBlock还是你的意思是TextBox?如果它是TextBox,您只需使用MaxLength属性。

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

如果它确实是一个TextBlock,你正在使用它并以某种方式允许用户输入数据,然后切换到使用TextBox。如果它是您所使用的TextBlock样式,则可以将TextBox设置为看起来像TextBlock。

答案 1 :(得分:8)

如果不创建自定义控件,您可以选择一些选项。

您可以尝试确定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" />

答案 2 :(得分:3)

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

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

答案 3 :(得分:0)

Either Set MaxHeight = "SomeHeight" and trim the overflow with

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

Or Use TextBox like Textblock by setting

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