Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Proprietà associata Validation.HasError

Ottiene un valore che indica se qualsiasi associazione su destinazione di associazione l'elemento dispone di un oggetto ValidationError.

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

See GetHasError

Valore proprietà

Tipo: System.Boolean
Impostare su true se qualsiasi associazione sull'elemento associato è un oggetto non vuoto Errors raccolta; in caso contrario, false. l'impostazione predefinita è false.

Campo dell'identificatore

HasErrorProperty

Proprietà dei metadati impostate a true

IsNotDataBindable

Per informazioni sul comportamento di questa proprietà in MultiBinding gli scenari, vedere HasError.

Per una descrizione dettagliata di convalida, vedere la sezione convalida dei dati di 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 Binding Validation (la pagina potrebbe essere in inglese).

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.

.NET Framework

Supportato in: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

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

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft