Esporta (0) Stampa
Espandi tutto

Classe Validation

Aggiornamento: Luglio 2008

Fornisce metodi e proprietà associate che supportano la convalida dei dati.

Spazio dei nomi:  System.Windows.Controls
Assembly:  PresentationFramework (in PresentationFramework.dll)

public static class Validation
public final class Validation
public final class Validation
Impossibile creare direttamente un'istanza di questa classe in XAML.

Per un esame dettagliato del processo di convalida, vedere la sezione Convalida dei dati in Cenni preliminari sull'associazione dati.

In questo esempio viene mostrato come utilizzare un oggetto ErrorTemplate e un trigger dello stile per fornire un feedback visivo e informare l'utente quando viene immesso un valore non valido in base a una regola di convalida personalizzata.

Il contenuto di testo dell'oggetto TextBox dell'esempio seguente è associato alla proprietà Age (di tipo int) di un oggetto origine di associazione denominato ods. L'associazione viene configurata per utilizzare una regola di convalida denominata AgeRangeRule in modo che se l'utente immette caratteri non numerici o un valore inferiore a 21 o maggiore di 130, accanto alla casella di testo viene visualizzato un punto esclamativo rosso e quando l'utente sposta il mouse sulla casella di testo viene visualizzata una descrizione comandi con il messaggio di errore.

<TextBox Name="textBox1" Width="50" FontSize="15"
         Validation.ErrorTemplate="{StaticResource validationTemplate}"
         Style="{StaticResource textBoxInError}"
         Grid.Row="1" Grid.Column="1" Margin="2">
  <TextBox.Text>
    <Binding Path="Age" Source="{StaticResource ods}"
             UpdateSourceTrigger="PropertyChanged" >
      <Binding.ValidationRules>
        <c:AgeRangeRule Min="21" Max="130"/>
      </Binding.ValidationRules>
    </Binding>
  </TextBox.Text>
</TextBox>


Nell'esempio seguente viene mostrata l'implementazione di AgeRangeRule che eredita da ValidationRule ed esegue l'override del metodo Validate. Il metodo Int32.Parse() viene chiamato sul valore per assicurarsi che non contenga caratteri non validi. Il metodo Validate restituisce ValidationResult che indica se il valore è valido in base al fatto che venga rilevata un'eccezione durante l'analisi e che il valore di durata non rientri nell'intervallo compreso tra i limiti inferiore e superiore.

public class AgeRangeRule : ValidationRule
{
    private int _min;
    private int _max;

    public AgeRangeRule()
    {
    }

    public int Min
    {
        get { return _min; }
        set { _min = value; }
    }

    public int Max
    {
        get { return _max; }
        set { _max = value; }
    }

    public override ValidationResult Validate(object value, CultureInfo cultureInfo)
    {
        int age = 0;

        try
        {
            if (((string)value).Length > 0)
                age = Int32.Parse((String)value);
        }
        catch (Exception e)
        {
            return new ValidationResult(false, "Illegal characters or " + e.Message);
        }

        if ((age < Min) || (age > Max))
        {
            return new ValidationResult(false,
              "Please enter an age in the range: " + Min + " - " + Max + ".");
        }
        else
        {
            return new ValidationResult(true, null);
        }
    }
}


Nell'esempio seguente viene mostrato l'oggetto ControlTemplate validationTemplate personalizzato che crea un punto esclamativo rosso per notificare all'utente un errore di convalida. I modelli di controllo vengono utilizzati per ridefinire l'aspetto di un controllo.

<ControlTemplate x:Key="validationTemplate">
  <DockPanel>
    <TextBlock Foreground="Red" FontSize="20">!</TextBlock>
    <AdornedElementPlaceholder/>
  </DockPanel>
</ControlTemplate>


Come mostrato nell'esempio seguente, l'oggetto ToolTip che visualizza il messaggio di errore viene creato utilizzando lo stile denominato textBoxInError. Se il valore di HasError è true, il trigger imposta la descrizione comandi dell'oggetto TextBox corrente sul primo errore di convalida. L'oggetto RelativeSource viene impostato su Self che fa riferimento all'elemento corrente.

<Style x:Key="textBoxInError" TargetType="{x:Type TextBox}">
  <Style.Triggers>
    <Trigger Property="Validation.HasError" Value="true">
      <Setter Property="ToolTip"
        Value="{Binding RelativeSource={x:Static RelativeSource.Self},
                        Path=(Validation.Errors)[0].ErrorContent}"/>
    </Trigger>
  </Style.Triggers>
</Style>


Per l'esempio completo, vedere Esempio di convalida dell'associazione.

Notare che se non si fornisce un oggetto ErrorTemplate personalizzato, il modello di errori predefinito sembra fornire un feedback visivo all'utente, quando si verifica un errore di convalida. Per ulteriori informazioni, vedere "Convalida dei dati" in Cenni preliminari sull'associazione dati. Inoltre, in WPF viene fornita una regola di convalida incorporata che rileva le eccezioni generate durante l'aggiornamento della proprietà dell'origine di associazione. Per ulteriori informazioni, vedere ExceptionValidationRule.

System.Object
  System.Windows.Controls.Validation

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Windows Vista

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0

Date

Cronologia

Motivo

Luglio 2008

Nuovi membri aggiunti: campo ValidationAdornerSiteProperty, campo ValidationAdornerSiteForProperty, metodo GetValidationAdornerSite, metodo GetValidationAdornerSiteFor, metodo SetValidationAdornerSite, metodo SetValidationAdornerSiteFor.

Modifica di funzionalità in SP1.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft