如何设置允许用户在xaml中的TextBlock中输入的字符数?
我会在模型上创建它还是创建某种自定义属性来处理它?</ p>
答案 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;
另一种选择是使用TextWrapping
和TextTrimming
属性。可以将以下属性添加到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"