2009-11-14 10 views
5

Come posso impostare un'espressione regolare su WPF TextBox? Desidero che la casella di testo accetti l'input in un formato predefinito. È possibile?Come posso impostare l'espressione regolare su TextBox?

+2

Ciao, si prega di dare un'occhiata alla risposta di questa domanda. Sembra essere esattamente ciò di cui hai bisogno: http://stackoverflow.com/questions/1103765/wpf-textbox-how-to-define-some-restriction – andyp

risposta

7

sono disponibili diverse opzioni:

  • È possibile creare un ValidationRule sottoclasse (vedi sotto) e aggiungerlo al tuo validatori proprietà di Binding
  • È possibile impostare una ValidationCallback sulla vostra proprietà bound, un'eccezione se il valore è errato e utilizzare this technique per visualizzare facilmente gli errori di convalida
  • È possibile creare una proprietà associata che registra un gestore di eventi per la proprietà TextBox.TextChanged e implementare il proprio meccanismo di notifica degli errori di convalida
  • È possibile utilizzare una casella di testo normale con un gestore TextBox_Changed in codice dietro
  • È possibile gestire PreviewKeyDown e PreviewTextInput da una proprietà associata, come illustrato here
  • È possibile utilizzare un masked text box come detto da Jan

Per regex arbitrarie In genere utilizzerei le funzionalità di convalida incorporate di WPF o eseguo la convalida sulla proprietà associata. Per esigenze specifiche, la casella di testo PreviewKeyDown/PreviewTextInput o mascherata potrebbe essere migliore.

Ecco come si potrebbe creare una sottoclasse ValidationRule:

public class RegexValidationRule : ValidationRule 
{ 
    ... // Declare Regex property and Message property 

    public override ValidationResult Validate(object value, CultureInfo cultureInfo) 
    { 
    if(Regex.IsMatch((string)value)) 
     return ValidationResult.ValidResult; 
    else 
     return new ValidationResult(false, Message); 
    } 
} 
0

O è possibile controllare l'evento modificato oppure è possibile utilizzare la cosiddetta casella di testo mascherata.

+0

non riesco a vedere la casella di testo mascherata nel wpf – viky

+1

Vedi http://stackoverflow.com/questions/481059/where-can-i-find-a-free-masked-textbox-in-wpf –

Problemi correlati