In einem WPF TextBox kann ich Zeichen in einer Zeichenfolge, die ein eine bestimmte Länge röten überschreiten?

StackOverflow https://stackoverflow.com/questions/1204412

Frage

Ich verwende eine TextBox Kontrolle und wollen, dass die Zeichen rot nach einer bestimmten Anzahl von Zeichen drehen Benutzer zu zeigen, dass sie zu viel eingegeben haben. Ich will nicht kürzen, da der Benutzer, dass „wirklich wichtige Gedanken“ eingegeben haben könnte und wenn ich abgeschnitten, sie würden es verlieren. Ich habe Validierung auf meinem zugrunde liegenden Geschäftsmodell, das mir sagt, wenn die Eingabe ungültig ist und ich meinen Stil TextBox Ungültigkeit zu zeigen.

Ich möchte auch den Text Style. Kann ich das eine TextBox verwenden, oder muss ich zu einem RichTextBox gehen? Mein zugrunde liegender Wert ist nur ein gerade String.

War es hilfreich?

Lösung

Ich nehme an, Sie verwenden den Bestand WPF Validierungsmechanismus - ValidationRules. Wenn ja, sollten Sie eine Trigger auf Validation.HasError == true definieren, und legen Sie TextBox Eigenschaften nach Bedarf. Zum Beispiel wird die folgende Text mit rot markieren, wenn es ungültig ist.

<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>

Andere Tipps

Dies ist eine Art verrückt Antwort und ich habe es noch nicht ausprobiert, aber wenn es funktioniert, würden Sie in der Lage sein, weiterhin ein Textbox zu verwenden, anstatt ein reichen Textbox.

Was passiert, wenn Sie einen Farbverlauf verwenden Sie den Text (oder wenn nicht der Text, der Textbox Hintergrund, wenn das war für Sie akzeptabel) zu malen.

Sie würden die Gradienten bauen, damit es weiß bis zu dem Punkt war der Eingang zu lang bekam und rot nach-Stationen. Natürlich, bis der Text bekam zu lange die Bürste ganz weiß sein würde.

Dies würde Text Messung beinhaltet die Steigung Definition richtig zu machen (da proportionale Schriftarten der gültige Bereich verursachen würden eine andere Größe auf den Buchstaben in Abhängigkeit steht) und würde erfordern, wird die Bürste an jedem Zeichen eingegeben, berechnet und zugewiesen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top