我正在使用 TextBox 控件,并希望字符在一定数量的字符后变为红色,以向用户显示他们输入的内容过多。我不想截断,因为用户可能已经键入了“非常重要的想法”。如果我被截断他们会失去它。我对我的基础业务模型进行了验证,告诉我输入何时无效,并设置我的 TextBox 以显示无效。

我也希望 Style 文本。我可以使用 TextBox 执行此操作,还是需要转到 RichTextBox ?我的潜在价值只是一个直线。

有帮助吗?

解决方案

我假设你正在使用股票WPF验证机制 - ValidationRules 。如果是这样,您应该在 Validation.HasError == true 上定义 Trigger ,并根据需要设置 TextBox 属性。例如,如果文本无效,则以下内容将突出显示带有红色的文本。

<TextBox>
  <TextBox.Text>
    <Binding ...>
      <Binding.ValidationRules>
        ...
      </Binding.ValidationRules>
    </Binding>
  </TextBox.Text>
  <TextBox.Style>
    <Style TargetType="{x:Type TextBox}">
      <Style.Triggers>
        <Trigger Property="Validation.HasError" Value="True">
          <Setter Property="Foreground" Value="Red" />
        </Trigger>
      </Style.Triggers>
    </Style>
  </TextBox.Style>
</TextBox>

其他提示

这是一种疯狂的答案,我还没有尝试过,但如果它有效,你就可以继续使用文本框而不是富文本框。

如果您使用渐变画笔绘制文本(如果不是文本,文本框背景,如果您可以接受),该怎么办?

你会构建渐变,使得它是白色的,直到输入太长并且后面是红色。当然,直到文本太长,画笔才会全白。

这将涉及文本测量以获得正确的渐变定义(因为比例字体会导致有效区域的大小不同,具体取决于输入的字母)和 需要在输入的每个字符上计算和分配画笔。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top