Comment : implémenter une logique de validation sur des objets personnalisés
Mise à jour : novembre 2007
Cet exemple montre comment implémenter une logique de validation sur un objet personnalisé, puis créer une liaison avec lui.
Exemple
Vous pouvez fournir une logique de validation sur la couche métier si votre objet source implémente IDataErrorInfo, comme dans l'exemple suivant :
public class Person : IDataErrorInfo
{
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
public string Error
{
get
{
return null;
}
}
public string this[string name]
{
get
{
string result = null;
if (name == "Age")
{
if (this.age < 0 || this.age > 150)
{
result = "Age must not be less than 0 or greater than 150.";
}
}
return result;
}
}
}
Dans l'exemple suivant, la propriété Texte de la zone de texte crée une liaison avec la propriété Age de l'objet Person, dont on a fait en sorte qu'il soit disponible pour une liaison via une déclaration de ressource qui reçoit le x:Keydata. DataErrorValidationRule recherche les erreurs de validation déclenchées par l'implémentation IDataErrorInfo.
<TextBox Style="{StaticResource textBoxInError}">
<TextBox.Text>
<!--By setting ValidatesOnExceptions to True, it checks for exceptions
that are thrown during the update of the source property.
An alternative syntax is to add <ExceptionValidationRule/> within
the <Binding.ValidationRules> section.-->
<Binding Path="Age" Source="{StaticResource data}"
ValidatesOnExceptions="True"
UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<!--DataErrorValidationRule checks for validation
errors raised by the IDataErrorInfo object.-->
<!--Alternatively, you can set ValidationOnDataErrors="True" on the Binding.-->
<DataErrorValidationRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Au lieu d'utiliser le DataErrorValidationRule, vous pouvez affecter à la propriété ValidatesOnDataErrors la valeur true.
Pour l'exemple complet, consultez Validation de la couche métier, exemple.
Voir aussi
Tâches
Comment : implémenter la validation de la liaison