【问题标题】:Set the maximum chr length of a TextBlock in XAML在 XAML 中设置 TextBlock 的最大字符长度
【发布时间】:2017-10-25 04:54:23
【问题描述】:

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

我是在模型上做还是创建某种自定义属性来处理它?

【问题讨论】:

标签: xaml


【解决方案1】:

TextBlock 没有 MaxLength,Label 也没有。文本框可以。除非您修改了文本块,否则用户无法输入文本块。

它真的是您要限制的 TextBlock 还是您的意思是 TextBox?如果是 TextBox,您可以简单地使用 MaxLength 属性。

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

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

【讨论】:

  • MaxLength 不起作用。用户可以输入超过 5 个字符。
  • 你确定你有一个样式化的 TextBox 而不是一个 TextBlock?
【解决方案2】:

如果不创建自定义控件,您有几个选择。

您可以尝试调整 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" />

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      设置 MaxHeight = "SomeHeight" 并用

      修剪溢出
      <TextBlock TextTrimming="CharacterEllipsis" Text="{Binding LongText}"
      

      或者通过设置

      使用像Textblock这样的TextBox
      <TextBox IsReadOnly="True" Background="Transparent" BorderThickness="0"
       MaxLength="100"
      

      【讨论】:

        猜你喜欢
        • 2010-09-30
        • 2018-03-12
        • 2015-09-30
        • 2012-09-16
        • 2012-04-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多