In una TextBox di wpf posso rendere rossi i caratteri di una stringa che superano una certa lunghezza?

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

Domanda

Sto usando un controllo TextBox e voglio che i caratteri diventino rossi dopo un certo numero di caratteri per mostrare agli utenti che hanno digitato troppo. Non voglio troncare poiché l'utente potrebbe aver digitato quel "pensiero davvero importante" e se troncassi lo perderebbero. Ho una convalida sul mio modello di business sottostante che mi dice quando l'input non è valido e modifico il mio TextBox per mostrare l'invalidità.

Voglio anche Style il testo. Posso farlo usando un TextBox o devo andare in un RichTextBox ? Il mio valore sottostante è solo una stringa dritta.

È stato utile?

Soluzione

Suppongo che tu stia utilizzando il meccanismo di convalida WPF stock - ValidationRules . In tal caso, è necessario definire un Trigger su Validation.HasError == true e impostare le proprietà TextBox secondo necessità. Ad esempio, quanto segue evidenzierà il testo in rosso se non è valido.

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

Altri suggerimenti

Questa è una specie di risposta folle e non l'ho ancora provata, ma se funziona, si sarebbe in grado di continuare a utilizzare una casella di testo anziché una ricca casella di testo.

Che cosa succede se si utilizza un pennello sfumato per disegnare il testo (o se non il testo, lo sfondo della casella di testo, se questo è accettabile per te).

Costruiresti il ??gradiente in modo che fosse bianco fino al punto in cui l'input è diventato troppo lungo e dopo il rosso. Ovviamente fino a quando il testo non è diventato troppo lungo il pennello sarebbe tutto bianco.

Ciò comporterebbe la misurazione del testo per ottenere la definizione gradiente corretta (poiché i caratteri proporzionali farebbero sì che l'area valida abbia dimensioni diverse a seconda delle lettere inserite) e richiederebbe che il pennello fosse calcolato e assegnato a ciascun carattere inserito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top