【发布时间】:2017-10-25 04:54:23
【问题描述】:
如何在 xaml 的 TextBlock 中设置允许用户输入的字符数?
我是在模型上做还是创建某种自定义属性来处理它?
【问题讨论】:
标签: xaml
如何在 xaml 的 TextBlock 中设置允许用户输入的字符数?
我是在模型上做还是创建某种自定义属性来处理它?
【问题讨论】:
标签: xaml
TextBlock 没有 MaxLength,Label 也没有。文本框可以。除非您修改了文本块,否则用户无法输入文本块。
它真的是您要限制的 TextBlock 还是您的意思是 TextBox?如果是 TextBox,您可以简单地使用 MaxLength 属性。
<TextBox Name="textBox1" MaxLength="5" />
如果它确实是您正在使用的 TextBlock,并且以某种方式允许用户向其中输入数据,则切换到使用 TextBox。如果是您所追求的 TextBlock 样式,您可以设置 TextBox 的样式,使其看起来像一个 TextBlock。
【讨论】:
如果不创建自定义控件,您有几个选择。
您可以尝试调整 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" />
【讨论】:
您可以使用文本块的“TextTrimming”属性。设置 TextTrimming = "CharacterEllipsis"。您可能需要使用 Width 来管理您真正想要显示的字符数。
<TextBlock TextTrimming="CharacterEllipsis" Text="{Binding Subject}"/>
【讨论】:
设置 MaxHeight = "SomeHeight" 并用
修剪溢出<TextBlock TextTrimming="CharacterEllipsis" Text="{Binding LongText}"
或者通过设置
使用像Textblock这样的TextBox<TextBox IsReadOnly="True" Background="Transparent" BorderThickness="0"
MaxLength="100"
【讨论】: